【郭天祥TX-1C增强版51单片机开发板试用体验】+秒表计时器

  • 建模太难了
  • LV3工程师
  • |      2017-08-12 15:46:20
  • 浏览量 1240
  • 回复:4
本帖最后由 lygo 于 2017-9-6 14:38 编辑 利用定时器延时,中断法这是百度对中断的概念解释 1、外部中断0(INT0),对应中断号是0, 中断入口地址0003H 定时/计数器0(T1),对应中断号1 ,中断入口地址000BH 外部中断1(INT1),中断号2 入口地址0013H 定时/计数器1(T1)中断号3 入口地址001BH 串行口中(RI/TI)中断号4 入口地址0023H 这五个是AT89S51的,52还多了下面这个 定时/计数器2(T2)中断号5,入口地址002BH 2、函数名()interrupt 0 {} //对应外部中断0; 函数名()interrupt 1 {} //对应定时器/计数器0中断; 函数名()interrupt 2 {} //对应外部中断1; 函数名()interrupt 3 {} //对应定时器/计数器1中断; 函数名()interrupt 4 {} //对应串口中断; 一共5种中断,优先级自上向下; at89c52中断类型相同。
#include



#define uchar unsigned char



sbit dula=P2^6;

sbit wela=P2^7;

unsigned char j,k,c1,c0,m,n=255;

unsigned char pp;

unsigned char code table={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};



void delay(unsigned char i)

{

  for(j=i;j>0;j--)

    for(k=125;k>0;k--);

}



void display(uchar a,uchar b)

{

   P0=table;

   dula=1;

   dula=0;

   

   P0=0xef;

   wela=1;

   wela=0;

   delay(5);

   

   P0=table;

   dula=1;

   dula=0;

   

   P0=0xdf;

   wela=1;

   wela=0;

   delay(5);

}



void main()

{

        TMOD=0x01;                 //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。

        TR0=1;                         //打开定时器

        TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。

        TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12

        ET0=1;                         //开定时器0中断

        EA=1;                         //开总中断

        while(1)

        {

                if(pp==20)

                {        pp=0;

                        m++;

                        n--;

                        P1=n;//闪烁灯

                        if(m==60)

                        {

                                m=0;           //若到了60s,则归零

                        }

                }

                c0=m%10;                  //取出当前描述的个位与十位

                c1=m/10;

                display(c1,c0);           //显示

        }

}



void time0() interrupt 1

{TH0=(65536-46080)/256;

        TL0=(65536-46080)%256;

        pp++;

}

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:4
lygo 2017-09-06
帮你改了标题格式
0   回复
举报
发布
348218692 2017-09-04
进度已经超过我啦,我也要加油
0   回复
举报
发布
qq1328512480 2017-08-22
还有貌似你的标题错了,这样系统抓不住的
0   回复
举报
发布
qq1328512480 2017-08-22
以后加上效果图更好
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子