ICCAVR编程Atmega128规则之计数/定时器T1的使用 溢出中断 定时

/**************
实现功能:在数码管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的值
    }    
  

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值