欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機10秒倒計時c語言匯編語言程序

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年01月01日   【字體:

(2)數碼管動態顯示(循環顯示0~9,時間間隔為1秒,1秒的時間間隔用定時器T0實現)

  ①匯編語言:

ORG 0000H

     AJMP MAIN

     ORG 000BH

     AJMP INTT0

     ORG 0030H

MAIN:CLR P2.7

     MOV DPTR,#TAB

     CLR A

     MOV R2,#0H

     MOV R3,#0H

     MOV TMOD,#01H

     MOV TH0,#4CH

     MOV TL0,#00H

     SETB EA

     SETB ET0

     SETB TR0

HERE: CJNE R2,#14H,HERE

      MOV R2,#0H

      PUSH ACC

      MOVC A,@A+DPTR

      MOV P0,A

      POP ACC

      INC A

      INC R3    

      CJNE R3,#0AH,HERE

 MOV R3,#00H        ;此處用DJNZ 更方便,只不過R3的初始值

;要設置為0AH,同時取消INC R3指令(此行上面第二行)   

      CLR A

      AJMP HERE

      ORG 80H

INTT0:MOV TH0,#4CH

      MOV TL0,#00H

      INC R2

      RETI

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

     END

②C語言

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

sbit p27=P2^7;//數碼管位選端定義

uchar c,i;

//數碼管譯碼表

unsigned char code NumDecode[] =

{

                0XC0,//;0

                0XF9,//;1

                0XA4,//;2

                0XB0,//;3

                0X99,//;4

                0X92,//;5

                0X82,//;6

                0XF8,//;7

                0X80,//;8

                0X90,//;9

};

void main()

{

       i=0;//10秒計時設置

       c=0;//中斷次數計數

       p27=1;//數碼管位選端關閉

       TMOD=1;//設置定時器0為工作方式1

       TH0=(65536-46080)/256;//定時50ms高8位求模

       TL0=(65536-46080)%256;//定時50ms低8位求余

       EA=1;//開總中斷

       ET0=1;//定時器0中斷

       TR0=1;//啟動定時器0

       while(1)

       {

          if(c==20)//50ms中斷20次

          {

              c=0;

              i++;//倒計時總數每秒減1

          }

          if(i<10)

          {

              p27=0;//數碼管位選選通

              P0=NumDecode[i];//顯示數據

           }

          else  //循環計時設置

          {

                i=0;

          }

       }

}

void timer0() interrupt 1//定時器0中斷入口

{

   TH0=(65536-46080)/256;//定時器重新賦初值

   TL0=(65536-46080)%256;

   c++;//中斷次數

}

 
關閉窗口

相關文章