/**************
实现功能:在数码管1,2上显示定时器以秒为单位的累加值
内容:定时器的溢出中断的使用
数码管显示温度
子函数的调用
总结:编程中遇到
a = number/10;
b = number%10;
show(a,b);
这两行编译不过去但是当吧number用具体的数据如12,64替换时
数码管又能正常显示 但是用变量number时数码管不能显示
很气愤 n久 后,重新编译 居然成功了 不明白怎么回事
************/
#include <iom128v.h>
#include <macros.h>
unsigned char i,j,k,a=0,b=0;
unsigned char number=0;
#pragma interrupt_handler miao:15
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//#pragma data:data
void miao()
{
if(number==60)
number=0;
number++;
TCNT1H=0X85;
TCNT1L=0XED;
}
void show(unsigned char j,unsigned char k)
{
unsigned int i;
//PORTC=0XFF;
//PORTA=0XFF;
PORTA=~table[j];
PORTC=~BIT(5); //控制数码管显示 低电平有效
i=6000;
while(i--);
//PORTC=0XFF;
//PORTA=0XFF;
PORTA=~table[k];
PORTC=~BIT(4); //控制数码管显示 低电平有效
i=6000;
while(i--);
//PORTC=0XFF;
}
void main()
{ DDRA=0XFF;
DDRB|=BIT(7); //定义控制蜂鸣器的PB7口 为输出模式
DDRC=BIT(4)|BIT(5); //定义PC4和PC5口为输出模式 此两口控制数码管1#2#的PNP型三极管
PORTC=0XFF;
// CLI();
TCCR1B=0X00; //stop
TCNT1H=0X85;
TCNT1L=0XED;
TIMSK|=BIT(2); //启动定时器1的溢出中断功能
TCCR1B=0X04; //对time1施行256分频
SREG|=BIT(7); //启用全局中断功能
// SEI();
while(1)
{
//unsigned char d ;
//d=64;
a = number/10;
b = number%10;
show(a,b); //数码管显示a,b的值
}
}