×
嵌入式 > 技术百科 > 详情

定时器中断0~100秒

发布时间:2020-10-12 发布时间:
|
电路很简单,我就不画图了,四位数码管 通过2个74hc595连起来,1个595负责段选,1个595负责位选,利用单片机的定时器中断实现0-100数字的循环显示.程序已经通过本人测试通过
#include
#define uint unsigned int
#define uchar unsigned char
sbit rck=P0^0;
sbit sck=P0^1;
sbit si=P0^2;
uchar num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};
uint b=0,i=0,j=0,k;
void write_595(uchar x)//对595芯片进行设初始化
 {
  for(k=0;k<8;k++) //移位寄存器
   {
    x>>=1;
 sck=0;
 si=CY;
 sck=1;
   }
 }
void date_danpianji()//对单片机计时器进行初始化

 {
  EA=1;//总中断开启
  ET1=1;//定时器开启
  TMOD=0X10;//选择定时器工作模式
  TH1=(65536-33333)/256;//除整赋给高八位
  TL1=(65536-33333)%256;//除余赋给第八位
  TR1=1; //启动定时器 
 }
void main()//主函数
 {
  date_danpianji();//调用定时器中断
  while(1)//循环
   {   
    if(b==20)//检测中断函数是否满足b==20,如果满足则执行
     {
   b=0;
   i++;
   if(i==10)
    {
     i=0;
     j++;
     if(j==10)j=0;
    }
  }
    write_595(num[j]);
    write_595(num[i]);
    rck=0;
    rck=1; 
   }
 } 
void ext() interrupt 3 using 1 //定时器中断
{
  TH1=(65536-33333)/256;
  TL1=(65536-33333)%256;
  b++;
}
 
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NS推出采用第二代PowerWise技术的能源管理单元及先进电源控制器