|
STC8a8k64S4A12怎么實現流水呼吸燈?只有呼吸燈的PWM代碼,現在想實現8個燈呈現波浪式的起伏,也算是流水呼吸燈了。目前只知道流水燈如何實現,但加上呼吸燈效果就有些蒙圈,希望大佬們指點。
求助大佬們,非常非常感謝!
單片機源程序如下:
- #include "STC8A.h"
- #include "intrins.h"
- //測試工作頻率為11.0592MHz
- #define CYCLE 0x1000
-
- void PWM_Isr() interrupt 22
- {
- static bit dir = 1;
- static int val = 0;
- char store;
- if (PWMCFG & 0x80)
- {
- PWMCFG &= ~0x80; //清中斷標志
- if (dir)
- {
- val++;
- if (val >= CYCLE) dir = 0;
- }
- else
- {
- val--;
- if (val <= 1) dir = 1;
- }
-
- store = P_SW2;
- P_SW2 |= 0x80;
- PWM0T2 = val;
- PWM1T2 = val;
- PWM2T2 = val;
- PWM3T2 = val;
- PWM4T2 = val;
- PWM5T2 = val;
- PWM6T2 = val;
- PWM7T2 = val;
- P_SW2 = store;
- }
- }
- void main()
- {
- P_SW2 = 0x80;
- PWMCKS = 0x00; // PWM時鐘為系統時鐘
- PWMC = CYCLE; //設置PWM周期為
- PWM0T1= 0x0000;
- PWM0T2= 0x0001;
- PWM0CR= 0x80; //使能PWM0輸出
- PWM1T1= 0x0000;
- PWM1T2= 0x0001;
- PWM1CR= 0x80; //使能PWM1輸出
- PWM2T1= 0x0000;
- PWM2T2= 0x0001;
- PWM2CR= 0x80;
- PWM3T1= 0x0000;
- PWM3T2= 0x0001;
- PWM3CR= 0x80; //使能PWM0輸出
- PWM4T1= 0x0000;
- PWM4T2= 0x0001;
- PWM4CR= 0x80; //使能PWM1輸出
- PWM5T1= 0x0000;
- PWM5T2= 0x0001;
- PWM5CR= 0x80;
- PWM6T1= 0x0000;
- PWM6T2= 0x0001;
- PWM6CR= 0x80; //使能PWM0輸出
- PWM7T1= 0x0000;
- PWM7T2= 0x0001;
- PWM7CR= 0x80; //使能PWM1輸出
- P_SW2 = 0x00;
- PWMCR = 0xc0; //啟動PWM模塊
- EA = 1;
- while (1);
- }
復制代碼
|
|