📄 slavr938.c
字号:
/*在SL-AVR开发实验器上,用SHIFT键,按一次键加一计数显示程序*/
#include <io8515.h> /*头文件*/
#define uchar unsigned char /*缩写定义*/
#define uint unsigned int
flash uchar DATA_7SEG[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};/*LED字形表*/
uchar led[6]; /*显示缓冲*/
uint count; /*延时子程序*/
void delay(uint t)
{
uint i;
for (i=0;i<t;i++);
}
void init_disp(void) /*初始化B口,D口*/
{
DDRB=0xff;
DDRD=0x7f;
PORTD|=0x80;
}
void disp(void) /*键盘显示*/
{
uchar i;
for (i=0;i<6;i++)
{
PORTD=~(0x01<<i);
PORTB=DATA_7SEG[led[i]];
delay(1000);
}
PORTB=0x00;
PORTD=0xff;
}
void be_pc0(void) /*发出一声响子程序*/
{
uint i;
DDRC|=0x01;
for (i=0;i<350;i++)
{
PORTC^=0x01;
delay(350);
}
}
void conv(void) /*计数值转换成十进制数*/
{
led[5]=0;
led[4]=count/10000;
led[3]=count/1000%10;
led[2]=count/100%10;
led[1]=count/10%10;
led[0]=count%10;
}
void main(void) /*主程序*/
{
init_disp( ); /*初始化B口,D口*/
count=0; /*开始计数值是零*/
conv(); /*转换*/
for( ; ; )
{
while((PIND&0x80)==0x80) /*没有键按下等待*/
disp(); /*显示*/
be_pc0(); /*发出一声响*/
count++; /*计数器加1*/
conv( ); /*转换成十进制数*/
while((PIND&0x80)==0) /*有键按下*/
disp(); /*显示*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -