📄 zdsmjp._c
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar num=0;uchar l;
#pragma interrupt_handler miao:9
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void show(uchar j,uchar k)
{
PORTA|=BIT(3);
PORTB=table[j];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(k);
PORTA|=BIT(4);
PORTA&=~BIT(4);
delay(80);//delay(1);
}
uchar key_press()
{
uchar i;
DDRD=0XFF;
PORTD=0XF0;
DDRD=0X0F;
i=PIND;
if(i==0XF0)
{
DDRD=0XFF;
return 0;
}
else
{
DDRD=0XFF;
return 1;
}
}
uchar key_scan()
{
uchar key,i=0X7F,j;
delay(10);
if(key_press())
{
do
{
i=(i<<1|i>>7);
PORTD=i;
DDRD=0X0F;
key=PIND;
j=key&0XF0;
}while(j==0XF0);
while(key_press());
switch(key)
{
case 0xEE:
key=0x0;
break;
case 0xDE:
key=0x1;
break;
case 0xBE:
key=0x2;
break;
case 0x7E:
key=0x3;
break;
case 0xED:
key=0x4;
break;
case 0xDD:
key=0x5;
break;
case 0xBD:
key=0x6;
break;
case 0x7D:
key=0x7;
break;
case 0xEB:
key=0x8;
break;
case 0xDB:
key=0x9;
break;
case 0xBB:
key=0xA;
break;
case 0x7B:
key=0xB;
break;
case 0xE7:
key=0xC;
break;
case 0xD7:
key=0xD;
break;
case 0xB7:
key=0xE;
break;
case 0x77:
key=0xF;
break;
default:
key=16;
}
}
else
{
key=16;
}
return key;
}
void miao()
{
if(num==60)
num=0;
num++;
TCNT1H=0X85;
TCNT1L=0XED;
if(key_press())
{
l=key_scan();
//show(l,3);
}
}
void main()
{
DDRB=0XFF;
DDRA|=0X18;//573锁存端
TCCR1B=0X04;//T/C1控制寄存器B
TCNT1H=0XB5;//计数寄存器(高位)
TCNT1L=0XED;//计数寄存器(低位)
TIMSK|=BIT(2);//T/C1中断屏蔽寄存器
SREG|=BIT(7);//总中断
while(1)
{
show(num/10,1);
show(num%10,0);
show(l,3);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -