stc12c5410ad 可不可以做到四路同时输出pwm?
为什么我的这个 代码 输出pwm频率为 10.52khz?我的目标是21.6k! //9月23日15:28:37 #include "DEFINE.h" void TIME0_INIT (void); void ADC_INIT (void); void PWM_init (void); void PWM3_set1 (void); void PWM3_set(unsigned char value); void delay(uchar delay_time) // 延时函数 { uchar n; uint m; for (n=0;n=30) { count=0; TEST_BYT=~TEST_BYT; } TF0=0; } void ADC_INIT(void) { AUXR = EADCI|T0X12; EADC_SPI = 1; P1=P1M0 =P1M1=0Xff; ADC_DATA=0; ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch; delay(2); } void ADC_ISR(void) interrupt 5 { ADC_CONTR &=! ADC_FLAG; ADC_VOL=ADC_DATA; AD_finished=1; ADC_DATA=0; } void PWM_init(void) { CCON=0X00; //设置PCA控制寄存器 CMOD=0x02; //08; //设置PCA工作模式寄存器 CL=0x00; //PCA低8位寄存器 CH=0x00; //PCA高8位寄存器 CCAPM3=0x42; //PWM3设置PCA工作方式为PWM方式(ECOM3=1,PWM3=1) CCAP3L=0x00; //设置PWM3初始值与CCAP0H相同 CCAP3H=0x00; // PWM1初始时为0 CR=1; //启动PCA定时器 } void PWM3_set (unsigned char value) { CCAP3L=value; //设置值直接写入CCAP3L CCAP3H=value; //设置值直接写入CCAP3H } void PWM3_set1() { CCAP3L=0x00; //设置值直接写入CCAP3L CCAP3H=0x00; //设置值直接写入CCAP3H } /*****************************/ #include "STC12C5410AD.H" #include #define uchar unsigned char #define uint unsigned int #define FOSC 11059200 #define BAUD 9600 #define ADC_POWER 0x80 #define ADC_FLAG 0x10 #define ADC_START 0x08 #define ADC_SPEEDLL 0x00 #define ADC_SPEEDL 0x20 #define ADC_SPEEDH 0X40 #define ADC_SPEEDHH 0x60 #define EADCI 0x10 //EADCI and EADC_SPI(IE.5) 是A/D转换功能允许寄存器 #define T0X12 0X80 //T0为1分频,不是12分频 #define EPC3L 0xfe sbit TEST_BYT = P2^2; bit AD_finished=0; uint ch=0x07; uchar value; unsigned int count; //int TIME0_50MS int ADC_VOL;
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |