📄 test.cpp
字号:
//TEST.cpp : source file for the TEST project
//
#include "TEST.h"
#include "TESTTimer.h"
/////////////////////////////////////////////////////////////////////////////
//TEST
void io_init(void)
{
//{{WIZARD_MAP(General)
//}}WIZARD_MAP(General)
//{{WIZARD_MAP(I/O Ports)
// PortB
PORTB = 0x0;
DDRB = 0x0;
// PortD
PORTD = 0x3f;
DDRD = 0x3f;
//}}WIZARD_MAP(I/O Ports)
//{{WIZARD_MAP(Watchdog)
// Watchdog Enabled, Prescaler: OSC/16k
wdt_enable(WDTO_15MS);
//}}WIZARD_MAP(Watchdog)
//{{WIZARD_MAP(Analog Comparator)
// Analog Comparator Disabled
ACSR = 0x80;
//}}WIZARD_MAP(Analog Comparator)
}
#define uchar unsigned char
#define uint unsigned int
#define Byte unsigned char
#define Word unsigned int
#define ulong unsigned long
#define bool bit
#define true 1
#define false 0
#define V_TH0 0xfb /* 时间常数高8位 (65536-500)/256 */
#define V_TL0 0x00 /* 时间常数低8位 (65536-500)%256 11.0592*/
#define ADD 2
#define reg01 XBYTE[0xc000]
#define reg02 XBYTE[0xc001] //控制寄存器
prog_uchar chr[]=
{
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
0x0B,0x0B,0x0A,0x0A,0x09,0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x05,0x05,0x04,0x04,
0x04,0x04,0x04,0x04,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,
0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0D,0x0C,0x0C,0x0B,0x00,
};
//*****************************************************************************
FLASH char chg[]=
{
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
0x0F,0x0E,0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x0A,0x0A,0x0A,
0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x08,0x08,0x07,0x07,
0x06,0x06,0x06,0x05,0x05,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
0x05,0x05,0x05,0x05,0x04,0x05,0x05,0x05,0x05,0x05,0x06,0x06,0x06,0x07,0x07,0x00,
};
//*************************************
uchar prog_char chb[]=
{
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,
0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0E,0x0D,0x0B,0x0A,0x08,0x07,0x06,0x05,0x04,0x03,
};
//******************************
uchar prog_char x64cr[]=
{
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
};
//********************
uchar prog_char x64cg[]=
{
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
};
//*************************************
uchar prog_char x64cb[]=
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
15,11,7,3,0,0,0,0,
};
//******************************
uchar prog_char x7cr[]=
{
15,
15,
0,
0,
0,
15,
15,
};
//********************
uchar prog_char x7cg[]=
{
0,
15,
15,
15,
0,
0,
15,
};
//*************************************
uchar prog_char x7cb[]=
{
0,
0,
0,
15,
15,
15,
15,
};
//**************************************************************
char pwm,rl,mode;
char pointer;
char dis_buf[96];
#define roe PB3
#define goe PB4
#define boe PB5
#define da PB0
#define sclk PB1
#define lat PB2
//*****************************************
// 延时
//**************************************
void delay(uint tim)
{
uint i;
while(tim!=0)
{
for(i=0;i<500;i++);
tim--;
}
}
//-----------------------
void cler(void)
{
uchar i,j;
j=0;
for(i=0;i<96;i++)
dis_buf[i]=~j;
}
//*****************************************
void pwm_oe(uchar r,g,b)
{
uchar i;
for(i=1;i<255;i++)
{
roe=(r<i)?1:0;
goe=(g<i)?1:0;
boe=(b<i)?1:0;
}
}
//********************************
// 多彩流动
//***************************************
void qcld(uchar ts,uchar code *rp,uchar code *gp,uchar code *bp)
{
uchar i,j;
for(j=0;j<ts;j++)
{
for(i=0;i<7;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[7]=dis_buf[24];
for(i=8;i<15;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[15]=dis_buf[32];
for(i=16;i<23;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[23]=dis_buf[40];
for(i=24;i<31;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[31]=dis_buf[48];
for(i=32;i<39;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[39]=dis_buf[56];
for(i=40;i<47;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[47]=dis_buf[64];
for(i=48;i<55;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[55]=dis_buf[72];
for(i=56;i<63;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[63]=dis_buf[80];
for(i=64;i<71;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[71]=dis_buf[88];
for(i=72;i<79;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[79]=*rp++;
for(i=80;i<87;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[87]=*gp++;
for(i=88;i<95;i++)
dis_buf[i]=dis_buf[i+1];
dis_buf[95]=*bp++;
delay(60);
}
}
//************************************
//七彩渐变
//**********************************
void qcjb(uint speed)
{
uchar i,j;
for(i=0;i<96;i++)
{
da=1;
sclk=1;
sclk=0;
}
lat=0;
lat=1;
for(i=0;i<255;i++)
for(j=0;j<speed;j++)
pwm_oe(i,0,0);
for(i=0;i<255;i++)
for(j=0;j<speed;j++)
pwm_oe(255,i,0);//y
for(i=255;i>0;i--)
for(j=0;j<speed;j++)
pwm_oe(i,255,0);//g
for(i=0;i<255;i++)
for(j=0;j<speed;j++)
pwm_oe(0,255,i);//q
for(i=255;i>0;i--)
for(j=0;j<speed;j++)
pwm_oe(0,i,255);//b
for(i=0;i<255;i++)
for(j=0;j<speed;j++)
pwm_oe(i,0,255);//z
for(i=0;i<255;i++)
for(j=0;j<speed;j++)
pwm_oe(255,i,255);//b
}
//**************************************
void pwmout(void)
{
uchar i;
for(i=0;i<96;i++)
{
da=(bit)(dis_buf[i]&rl);
sclk=0;
sclk=1;
}
lat=0;
lat=1;
}
//*******************************************
void timer1() interrupt 1
{
//TR0=0;
pwm++;
switch(pwm)
{
case 1:
pwmout();
rl=0x02;
break;
case 2:
pwmout();
rl=0x04;
break;
case 4:
pwmout();
rl=0x08;
break;
case 8:
pwmout();
rl=0x01;
break;
case 16:
pwm=0;
break;
default: break;
}
TL0=V_TL0;
TH0=V_TH0;
// TR0=1;
}//end sub
int main(void)
{
//{{WIZARD_MAP(Initialization)
io_init();
timers_init();
//}}WIZARD_MAP(Initialization)
// TODO: Add extra initialization here
//{{WIZARD_MAP(Global interrupt)
//}}WIZARD_MAP(Global interrupt)
while(1)
{
EA=0;
qcjb(2);
EA=1;
roe=0;
goe=0;
boe=0;
cler();
qcld(255,chr,chg,chb);
qcld(255,chr,chg,chb);
qcld(56,x64cr,x64cg,x64cb);
qcld(56,x64cr,x64cg,x64cb);
for(i=0;i<12;i++)
qcld(7,x7cr,x7cg,x7cb);
}
// while(1)
// {
// TODO: Add your code here
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -