STC 89C52RC
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
ulong periodCnt = 0; //PWM周期计数值
uchar highRH = 0; //高电平重载值的高字节
uchar highRL = 0; //高电平重载值的低字节
uchar lowRH = 0; //低电平重载值的高字节
uchar lowRL = 0; //低电平重载值的低字节
uchar T1RH = 0; //T1重载值的高字节
uchar T1RL = 0; //T1重载值的低字节
uchar code dutyCycle[13] = { //占空比调整表
5, 18, 30, 41, 51, 60, 68, 75, 81, 86, 90, 93, 95
};
uchar code image[8] = {
0x81,0x81,0xE7,0xC3,0xC3,0xE7,0x81,0x81
};
uchar hRHi[13], hRLi[13], lRHi[13], lRLi[13];
void configTmr1(uint ms);
void configPWM(uint fr, uchar dc);
void calcRldVal(uchar idx);
void main() {
uchar i;
EA = 1; //开总中断
ADDR3 = 0; //选中LED点阵
configPWM(1000, dutyCycle[0]);