|
- #include <stc8.h>
- #include "hc595.h"
- #include "pwm.h"
- #define CYCLE 100 // 設(shè)置PWM周期為1000H個(gè)PWM時(shí)鐘
- unsigned char table[] = {90,70,50,30,10};// 定義5個(gè)檔位的占空比
- sbit keyContrl = P0^7; // 獨(dú)立按鍵總開關(guān)
- sbit key1 = P0^0; // 獨(dú)立按鍵1
- void Delay(unsigned int xms) // 毫秒級延時(shí)
- {
- unsigned int i, j;
- for(i=xms;i>0;i--)
- {
- for(j=921;j>0;j--);
- }
- }
- void main()
- {
- unsigned char i = 0;
- P_SW2 = 0x80;
- PWMCKS = 0x00; // PWM時(shí)鐘為系統(tǒng)時(shí)鐘
- PWMC = CYCLE; // 設(shè)置PWM周期為CYCLE個(gè)PWM時(shí)鐘
- PWM5T1= 0; // 在計(jì)數(shù)值為0時(shí),開始輸出低電平
- PWM5T2= 0; // 在計(jì)數(shù)值為0時(shí),開始輸出高電平
- PWM5CR= 0x88; // 使能PWM5_2輸出
- P_SW2 = 0x00;
- PWMCR = 0x80; // 啟動PWM模塊
- keyContrl = 0;
- while (1)
- {
- if(!key1) // 獨(dú)立按鍵1,被按下
- {
- Delay(10); // 延時(shí)消抖
- if(!key1)
- {
- i++; // 檔位增加1
- if(i>4) // 大于最大檔位后,歸零
- {
- i = 0;
- }
- }
- while(!key1); // 等待按鍵抬起
- }
- PWM5T2= table[i]; // 把i檔位的占空比賦給PWM5T2
-
- // 訪問邏輯地址位于XDATA區(qū)域的特殊功能寄存器前需要
- // 將 P_SW2(BAH)寄存器的最高位(EAXFR)置 1
- P_SW2 |= 0x80;
-
- display(0,i); // 顯示檔位(0~4,共5個(gè)檔位)
- }
- }
復(fù)制代碼 |
|