|
實現(xiàn)本功能的中穎MCU源碼如下:- /******************************
- 說明:
- SH88F516單片機繼承了3個8位PWM模塊,可以分別通過各自的PWMCON寄存器控制PWM模塊的時鐘,PWMP寄存器控制PWM輸出波形的周期,PWMD寄存器控制PWM輸出波形的
- 占空比,從而產(chǎn)生周期和占空比分別可調(diào)整的脈寬調(diào)制波形.在PWM輸出允許期間可以修改這三個寄存器,但在下一個PWM周期修改才會起作用. PWM定時器提
- 供3個中斷源,在每個PWM周期都會產(chǎn)生中斷.他們有不同的標(biāo)志位,共享一個中斷向量地址.
- 本程序通過按鍵S1,S2,S3來調(diào)節(jié)電機轉(zhuǎn)速,S1--慢速 S2--中速 S3--快速
- 直流電機的調(diào)速實際上是通過改變PWM的占控比來實現(xiàn)的,因而可以實現(xiàn)多檔速度的控制.
- 要求:打開J14的1腳
- ************************/
- #include <sh88f516.h>
- unsigned char Temp;
- void init();
- main()
- {
- init();
-
- while(1) ;
- }
- void init()
- {
- CLKCON = 0x00; //系統(tǒng)時鐘=osc
- PWM0P = 100; //PWM0輸出周期 = PWM0P[7-0]*PWM0時鐘
- PWM0D = 90; //PWM0輸出占空比 = PWM0D[7-0]*PWM0時鐘
- PWM0CON = 0xB1; //PWM0控制寄存器; 1000 0001---打開PWM0定時器,并從PWM0管腳輸出 占空比極性為高,時鐘為系統(tǒng)時鐘的1/16
- IENC = 0x70; //IENC = 0111 0000B 即 EX4選擇寄存器打開4,5,6三個通道
- EXF0 = 0x01; //EX4采用下降沿方式觸發(fā)
- IEN1 = 0x60; //IEN1 = 0110 0000B 即 EX4=1 EPWM=1 打開外部中斷4 開啟PWM中斷 不能使用位操作,不具備位尋址功能
- EA = 1; //開啟總中斷
- Temp = 90;
- }
- void PWM_INT() interrupt 12 using 3 //PWM0/1/2的中斷號共享為12.
- {
- if(PWM0CON & 0x02) //判斷是否為PWM0中斷?
- {
- PWM0D = Temp; //占空比可調(diào)
- }
- PWM0CON &= 0xFD; //清除中斷標(biāo)志位 PWMIF=0但是這邊不能使用位操作,不具備位尋址功能
- }
- void EX4_INT() interrupt 13 //using 2 //外部中斷4的中斷號為13.
- {
-
- IEN1 &= 0xBF;
- if(IF44) //高速
- Temp = 100;
- if(IF45) //中速
- Temp = 90;
- if(IF46) //慢速
- …………
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

壓縮包里面包含有中穎單片機sh88f516常用功能的源碼,中文注釋都很詳細(xì).
下載地址:http://www.zg4o1577.cn/bbs/dpj-98300-1.html
|
|