ATME16 定时器1实现电子钟表
来源:互联网 发布:淘宝买药不是直接付款 编辑:程序博客网 时间:2024/05/17 05:12
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uint fen=33;
uint shi=18;
uint miao=0;
uint ri=0;
uint g=0;
#pragma interrupt_handler timer1_isr:9
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
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=table[j];
PORTB=0XFF;
PORTB&=~BIT(k);
delay(1);
}
void temer1_init(void)
{
TCCR1B=0X04; //开timer1 为256分频
TCNT1H=0X85;
TCNT1L=0XED;
TIMSK|=BIT(2);
SREG|=BIT(7);
}
void timer1_isr(void)
{
miao++;
TCNT1H=0X85;
TCNT1L=0XED;
}
uchar key_press()
{
uchar j;
DDRD|=0X0F;
PORTD|=0X0F;
DDRD&=0XF0;
j=PIND;
j=j&0X0F;
if(j==0X0F)
{
return 0;
}
else
{
return 1;
}
}
uchar key_scan()
{
uchar key;
delay(10);
if(key_press())
{
key=PIND;
//key=0X0E;
key&=0X0F;
switch(key)
{
case 0X0E:
key=1;
break;
case 0X0D:
key=2;
break;
case 0X0B:
key=3;
break;
case 0X07:
key=4;
break;
default:
key=16;
}
while(key_press());
}
else
{
key=16;
}
return key;
}
void main()
{
uchar i,l;
temer1_init();
DDRA|=0XFF;//0001 1000
DDRB=0XFF;
while(1)
{
i=key_press();
if(i)
{
l=key_scan();
if(l==1)
{
show(miao%10,0);
show(miao/10,1);
show(fen%10,2);
show(fen/10,3);
}
if(l==2)
{
shi++;
}
if(l==3)
{
fen++;
}
}
if(miao==60)
{
miao=0;
fen++;
}
if(fen==60)
{
fen=0;
shi++;
}
if(shi==24)
{
shi=0;
ri++;
}
show(fen%10,0);
show(fen/10,1);
show(shi%10,2);
show(shi/10,3);
}
}
- ATME16 定时器1实现电子钟表
- 实现有声音的电子钟表
- 简单自定义View的实现(电子钟表)
- 定时器实现钟表(重点:运算符重载)
- 不用位图文件的电子钟表
- 用单片机定时器和数码管实现的电子时钟
- JavaScript实现钟表
- 用js实现钟表
- JS实现钟表计时。
- JS实现钟表
- Wpf实现钟表效果
- Android 钟表的实现
- QT 钟表的实现
- JS实现钟表效果
- JS实现钟表效果
- 图形钟表的实现
- QML实现钟表效果
- iOS 简易钟表实现
- Android 内存泄漏调试
- response.setHeader()的用法
- 云
- Android调试工具及方法
- Android 信号处理面面观 之 概述
- ATME16 定时器1实现电子钟表
- Android Tips
- 创建图形化界面
- C/C++链表实现
- JSP如何获取用户的真实IP地址[转载]
- 重要的web程序性能指标
- 一致代码段和非一致代码段
- Android发行版本
- 装系统