|
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);
- }
复制代码
|
|