|
本帖最后由 lkc8210 于 2022-6-30 23:21 編輯
- #include <stc8.h>
- #include <intrins.h>
- #define u8 unsigned char
- #define u16 unsigned int
- #define u32 unsigned long
- sbit key_add=P5^3;
- sbit key_dec=P4^4;
- u8 t=50;
- void Delay(unsigned int xms) // 毫秒級延時(shí)
- {
- unsigned int i, j;
- for(i=xms; i>0; i--)
- {
- for(j=921; j>0; j--);
- }
- }
- void anjian_add() //電機(jī)減速
- {
- static u8 Delay_XD = 0;
- if(key_add==0)
- {
- if(Delay_XD<0xFF)
- {
- Delay_XD++;
- Delay(1);
- }
- if(Delay_XD==20)
- {
- t+=5; //每按一次加速按鍵占空比減1
- if(t>=255) //限定占空比下限
- {
- t=255;
- }
- CR = 0;
- CCAP2L = t; //PWM占空比為81%[(100H-20H)/100H]
- CCAP2H = t;
- CR = 1; //啟動PCA計(jì)時(shí)器
- }
- }
- else
- {
- Delay_XD = 0;
- }
- }
- void anjian_dec()//電機(jī)加速
- {
- static u8 Delay_XD = 0;
- if(key_dec==0)
- {
- if(Delay_XD<0xFF)
- {
- Delay_XD++;
- Delay(1);
- }
- if(Delay_XD==20)
- {
- t-=5; //每按一次按鍵占空比加1
- if(t<=0) //限定占空比上限
- {
- t=0 ;
- }
- CR = 0;
- CCAP2L = t; //PWM占空比為81%[(100H-20H)/100H]
- CCAP2H = t;
- CR = 1; //啟動PCA計(jì)時(shí)器
- }
- }
- else
- {
- Delay_XD = 0;
- }
- }
- void PWM_shuchu()
- {
- CCON = 0x00;
- CMOD = 0x08; //PCA時(shí)鐘為系統(tǒng)時(shí)鐘
- CL = 0x00;
- CH = 0x00;
- CCAPM2 = 0x42; //PCA模塊2為PWM工作模式
- PCA_PWM2 = 0x00; //PCA模塊2輸出8位PWM P1^5;
- CCAP2L = t; //PWM占空比為81%[(100H-20H)/100H]
- CCAP2H = t;
- CR = 1; //啟動PCA計(jì)時(shí)器
- }
- void main()
- {
- PWM_shuchu();
- while(1)
- {
- anjian_add();
- anjian_dec();
- }
- }
復(fù)制代碼 |
|