#define PWMP 0x0DD #define PWM0_Duty 0x06F #define PWM1_Duty 0x06F #define PWM2_Duty 0x06F #define PWM3_Duty 0x06F typedef enum { E_CHANNEL0, E_CHANNEL1, E_CHANNEL2, E_CHANNEL3, } E_PWMCNL_SEL; #include <stdio.h> #include "N79E81x.h" #include "Typedef.h" #include "Define.h" #include "Common.h" #include <intrins.h> #include "Version.h" #include "Delay.h" #include <string.h> sbit key=P0^0; bit flag=0; bit sflag=0; bit a; bit b; UINT16 PWM_shadow; //----------------------------------------------------------------------------------------------------------- void Init_PWM(void) { PWM_shadow = PWMP; PWMPH = HIBYTE(PWM_shadow); PWMPL = LOBYTE(PWM_shadow); PWMCON0 = 0xD0; } void PWM_Pin_Recover_IO(void) //复位函数 { PWMCON0 = 0x00;// PWMCON1 = 0x00;// PWMCON2 = 0x00;// PWMPH = 0x00;// PWMPL = 0x00;// PWM0H = 0x00;// PWM0L = 0x01;// PWM1H = 0x00;// PWM1L = 0x01;// PWM2H = 0x00;// PWM2L = 0x01;// PWM3H = 0x00;// PWM3L = 0x01; // PWMP < PWMn Duty, PWM Pin Output High(no-active) PWMCON0 = 0xD0;// PWM Run 运行PWM _nop_ (); // NOP PWMCON0 = 0x2F;// PWM Stop } void PWM_Channel(E_PWMCNL_SEL Channel)//选择PWM通道 { switch(Channel) { case E_CHANNEL0: PWM_shadow=PWM0_Duty; PWM0H = HIBYTE(PWM_shadow);// PWM0 Duty (P0.1) PWM0L = LOBYTE(PWM_shadow); break; case E_CHANNEL1: PWM_shadow=PWM1_Duty; PWM1H = HIBYTE(PWM_shadow);// PWM1 Duty (P1.6) PWM1L = LOBYTE(PWM_shadow); break; case E_CHANNEL2: PWM_shadow=PWM2_Duty; PWM2H = HIBYTE(PWM_shadow);// PWM2 Duty (P1.7) PWM2L = LOBYTE(PWM_shadow); break; case E_CHANNEL3: PWM_shadow=PWM3_Duty; PWM3H = HIBYTE(PWM_shadow);// PWM3 Duty (P0.0) PWM3L = LOBYTE(PWM_shadow); break; } } void PWM_Close(E_PWMCNL_SEL Channel)//选择PWM通道 { switch(Channel) { case E_CHANNEL0: PWM_shadow=0x0DD; PWM0H = HIBYTE(PWM_shadow);// PWM0 Duty (P0.1) PWM0L = LOBYTE(PWM_shadow); break; case E_CHANNEL1: PWM_shadow=0x0DD; PWM1H = HIBYTE(PWM_shadow);// PWM1 Duty (P1.6) PWM1L = LOBYTE(PWM_shadow); break; case E_CHANNEL2: PWM_shadow=0x0DD; PWM2H = HIBYTE(PWM_shadow);// PWM2 Duty (P1.7) PWM2L = LOBYTE(PWM_shadow); break; case E_CHANNEL3: PWM_shadow=0x0DD; PWM3H = HIBYTE(PWM_shadow);// PWM3 Duty (P0.0) PWM3L = LOBYTE(PWM_shadow); break; } } void Enabled_Brake_Function(void) //钳位函数 { PWMCON1 = 0x30; } void Scan(void)//按键子程序 { if((a==1)&&(b==1)) { flag=~flag; a=0; b=0; } if(key==1) { a=1; } if(key==0) { Delay1ms(5); if(key==0) { b=1; } while(key==0); } } void Disp(void)//led显示程序 { if(flag==1) { P12=0; P30=0; PWM_Channel(E_CHANNEL0); Init_PWM(); Enabled_Brake_Function(); } else if(flag==0) { P12=1; P30=1; PWM_Close(E_CHANNEL0); Init_PWM(); Enabled_Brake_Function(); } } void main(void) { P02_Input_Mode; P03_Input_Mode; P04_Input_Mode; P30_Quasi_Mode; P13_OpenDrain_Mode; P12_OpenDrain_Mode; P01_PushPull_Mode; P07_Input_Mode; P05_Input_Mode; P11_Input_Mode; P10_Quasi_Mode; P00_Input_Mode; P10=0; P01=0; flag=0; while(1) { Scan(); Disp(); } }
收藏0 举报
huahuagg 发表于 2018-11-25 19:04 pwm_close(); pwm_open();
643757107 发表于 2018-11-25 22:03 搞定了,发个贴分享一下代码啊。
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
发帖类勋章
等级类勋章
时间类勋章
9
73
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号