📄 数码时钟.c
字号:
# include<iom16.h>
# include<stdio.h>
#include <intrinsics.h>
#define uchar unsigned char
#define uint unsigned int
uchar displaycode[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//数码管显示代码;
uchar displaybit[]={0xfe,0xfd,0xff,0xf7,0xef,0xff,0xbf,0x7f};//数码管位控制
uchar disbuf[]={0,0,0,0,0,0,0,0};
uint ms;
uchar i;
uchar hour,min,sec;
/************键盘扫描程序**********************/
void key_scan(void)
{
if(PINC==0XFE)
{
__delay_cycles(1000);
if(PINC==0XFE)
sec++;
if(sec>=60)
sec=0;
while(PINC==0XFE);
}
if(PINC==0XFD)
{
__delay_cycles(1000);
if(PINC==0XFD)
min++;
if(min>=60)
min=0;
while(PINC==0XFD);
}
if(PINC==0XFB)
{
__delay_cycles(1000);
if(PINC==0XFB)
hour++;
if(hour>=24)
hour=0;
while(PINC==0XFB);
}
if(PINC==0XF7)
{
__delay_cycles(1000);
if(PINC==0XF7)
min--;
if(min<=0)
min=59;
while(PINC==0XF7);
}
if(PINC==0Xef)
{
__delay_cycles(1000);
if(PINC==0Xef)
hour--;
if(hour<=0)
hour=23;
while(PINC==0Xef);
}
/* if(PINC7==0)
{
__delay_cycles(2000)
if(PINC7==0)
hour++;
}
*/
disbuf[0]=sec%10;
disbuf[1]=sec/10;
disbuf[3]=min%10;
disbuf[4]=min/10;
disbuf[6]=hour%10;
disbuf[7]=hour/10;
}
/***********************************************/
void main()
{
//void key_scan();
PORTA=0XFF;
DDRA=0XFF;
PORTB=0XFF;
DDRB=0XFF;
PORTC=0XFF;
DDRC=0X00;
TCCR0=0X01;
TIMSK=0X01;
SREG=0X80;
TCNT0=0X06;
while(1)
{
key_scan();
if(ms>=4000)
{
ms=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=60)
{
min=0;
hour++;
if(hour>=24)
hour=0;
}
}
}
}
}
/*****************************************************/
#pragma vector=TIMER0_OVF_vect
__interrupt void timer0()
{
//TCNT0=0X06;
ms++;
i++;
if(i==8)
i=0;
PORTA=displaycode[disbuf[i]];
PORTB=displaybit[i];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -