📄 main.i
字号:
#line 55 "C:\PROGRA~1\ICCAVR\include\macros.h"
void _StackCheck(void);
void _StackOverflowed(char);
#line 6 "f:\MYDOCU~1\AVR\test\delay.h"
void Delay_MS(unsigned int iTime)
{ unsigned char i;
while(iTime>0)
{
for (i=1;i<187;i++)
asm("nop");
iTime--;
}
}
void Delay_US(unsigned int iTime)
{
unsigned int i,j;
j = iTime * 8;
for(i=0;i<j;i++);
}
#line 11 "f:\MYDOCU~1\AVR\test\main.c"
unsigned char SEG7[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
unsigned char PADV[16] = {-1};
unsigned char CADV[16] = {0};
unsigned char ScaleCHindex = 0;
#pragma interrupt_handler OnTimer0:10
void OnTimer0(void)
{ unsigned char adv;
(*(volatile unsigned char *)0x27) = 0x20 + ScaleCHindex;
(*(volatile unsigned char *)0x26)|=(1<<6);
Delay_US(60);
(*(volatile unsigned char *)0x26)|=(1<<6);
Delay_US(60);
adv = (*(volatile unsigned char *)0x25);
if(adv == 0xFF) adv = 0xFE;
else if((*(volatile unsigned char *)0x25) == 0x00) adv = 0x01;
CADV[ScaleCHindex] = adv;
ScaleCHindex++;
if(ScaleCHindex >= 6) ScaleCHindex = 0;
adv = (*(volatile unsigned char *)0x30);
Delay_US(50);
if(adv != (*(volatile unsigned char *)0x30)) return;
CADV[6] = ((*(volatile unsigned char *)0x30) & 0x10) ? 0xFF : 0x00;
CADV[6+1] = ((*(volatile unsigned char *)0x30) & 0x20) ? 0xFF : 0x00;
CADV[6+2] = ((*(volatile unsigned char *)0x30) & 0x40) ? 0xFF : 0x00;
CADV[6+3] = ((*(volatile unsigned char *)0x30) & 0x80) ? 0xFF : 0x00;
}
void init_devices(void)
{
unsigned int baud = 9600;
asm("cli");
(*(volatile unsigned char *)0x38) = 0xFF;
(*(volatile unsigned char *)0x37) = 0xFF;
(*(volatile unsigned char *)0x35) = 0x00;
(*(volatile unsigned char *)0x34) = 0x00;
(*(volatile unsigned char *)0x32) = 0xF0;
(*(volatile unsigned char *)0x31) = 0x0F;
(*(volatile unsigned char *)0x53) = 0x00;
(*(volatile unsigned char *)0x52) = 0x0F;
(*(volatile unsigned char *)0x53) = 0x05;
(*(volatile unsigned char *)0x26) = 0x00;
(*(volatile unsigned char *)0x27) = 0x20;
(*(volatile unsigned char *)0x28) = 0x80;
(*(volatile unsigned char *)0x26) = 0x83;
(*(volatile unsigned char *)0x40) = (unsigned char)(baud>>8);
(*(volatile unsigned char *)0x29) = (unsigned char)(baud);
(*(volatile unsigned char *)0x2A) = (1<<3);
(*(volatile unsigned char *)0x40) = (1<<7)|(1<<3)|(1<<UCSZ8);
(*(volatile unsigned char *)0x55) = 0x00;
(*(volatile unsigned char *)0x5B) = 0x00;
(*(volatile unsigned char *)0x59) = 0x01;
asm("sei");
}
main()
{
int i = 0,j = 0;
init_devices();
while(1)
{
for(j=0;j<16;j++)
if(PADV[j] != CADV[j])
{ i = j;
PADV[j] = CADV[j];
}
(*(volatile unsigned char *)0x32) = 0x01;
(*(volatile unsigned char *)0x38) = SEG7[CADV[i] & 0x0F];
Delay_MS(20);
(*(volatile unsigned char *)0x32) = 0x02;
(*(volatile unsigned char *)0x38) = SEG7[CADV[i] >> 4];
Delay_MS(20);
(*(volatile unsigned char *)0x32) = 0x08;
(*(volatile unsigned char *)0x38) = SEG7[i];
Delay_MS(20);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -