avr 单片机用c写个数码管每秒加一的程序

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:22:53
用定时/计数器中断写两个数码管每秒加一
从1数到99
嘿嘿 本人初学者 大概知道怎么写 有些细节不太明白 大家见笑了 谢谢大家了~~~~~~

//秒表的设定
#include<iom16v.h>
#define uint unsigned int
#define uchar unsigned char

#define display_data PORTC //数码管数据口
#define display_contrl PORTD //数码管控制口
uchar x[10]={0xc0,0xf9,0xa4,0xb0,0x99, //共阳数码管段码值
0x92,0x82,0xf8,0x80,0x90};
uint m=0,n=0,k=0;
//延时子程序
void delay(uint m)
{
for(;m>0;m--);
}
//中断服务子程序
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0=0xf1; //重新加载计数初值
k++;
}
//主程序
void main()
{
PORTA=0xff; //端口初始化
PORTB=0xff;
PORTC=0xff;
PORTD=0xff;

DDRA=0xff;
DDRB=0xff;
DDRC=0xff;
DDRD=0xff;

TCNT0=0xf1; //计数初值(计数溢出时为1ms并产生中断)
TCCR0=0x03; //选择64分频
TIMSK=0x01; //开timer0中断允许
SREG=0x80; //开总中断允许

while(1)
{