pwm_duty.c
来自「TI 集成高性能24位A/D转换器的8052 核心单片机MSC1210 PWM发」· C语言 代码 · 共 47 行
C
47 行
// 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 + =
减小字号Ctrl + -
显示快捷键?