?? pwm_duty.c
字號:
// PWM
#include <REG1210.H>
#define XTAL 2 // Actual Crystal = 1.8432 MHz for MSC1210-DAQ-EVM
#define OneUsConst (XTAL-1)
#define CLEAR 0
#define SET 1
sbit p33=P3^3;
sbit p14=P1^4;
unsigned int p,d; // Temporary for Period and Duty
void pwm_isr( void) interrupt 2 //External Interrupt 1
{ p14=!p14; // debug
PWMCON &= 0xef; // select PWMPeriod
PWM=p; // Set PWMPeriod
PWMCON |=0x10; // select PWMDuty
PWM=d;
IE1=CLEAR; // Clear pending interrupt
EX1=CLEAR;
}
void setpwm(unsigned int period, unsigned int duty)
{ p14=!p14; // debug
p=period; d=duty; // Save for use by the interrupt
IE1=CLEAR; // Clear any pending interrupt
EX1=SET; // Enable *INT1 pin interrupt
}
void main(void)
{ char i;
// Setup External INT1
IT1=SET; // Config *INT1 pin for falling edge trigger
EA=SET; // Global Int Enable
PDCON &= 0x0ed; //turn on tone gen & sys timer
USEC = OneUsConst;
p33=1; // turn on P3.3
PWMCON=0; // select PWMPeriod
PWM=500; // Set PWMPeriod
PWMCON=0x10; // select PWMDuty
PWM=200;
PWMCON=0x19; // Enable PWM
for (i=0;i<5;i++) {;}
setpwm(200,100); // set period/duty after current PWM cycle
while(1) {}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -