定时器简单程序代码
自己焊接的电路板,简单的用三极管(连接P2口)启动数码管(连接P0口),用开关焊接到P1口,用来调节时间
HOUR EQU 30H
MINUTE EQU 31H
SECOND  EQU 32H
HSHIWEI EQU 33H
HGEWEI EQU 34H
MSHIWEI EQU 35H
MGEWEI EQU 36H
SSHIWEI EQU 37H
SGEWEI EQU 38H
ORG 0000H
SJMP START
ORG 000BH
AJMP TIME0
ORG 0030H
  START :
        MOV SP,#60H; 设置堆栈指针
        MOV DPTR,#TAB;    给数据指针赋初始值,使其指向TAB       
        MOV 20H,#0;给20H赋值20,中断1s
        MOV SECOND ,#0; 给秒针地址赋值初值00
        MOV MINUTE ,#0;    给分钟地址赋值初值00
        MOV HOUR ,#0      ;给小时单元赋值12H
        MOV TH0,#3CH;    给定时器高8位赋值3CH (50ms)
        MOV TL0 ,#0B0H; 给定时器第8位赋值0B0H (50ms)
        // MOV P0,#0C0H;    给P0送段段选地址显示00
        // MOV P2,#3FH; 设置P2端口使得数码管都开启
        MOV TMOD,#01H;    设置定时器T0工作在方式1
        SETB ET0;开启T0中断
        SETB EA;  开启总中断
        SETB TR0; 设置TR0,定时器开始计数
;******************************主程序************************************
  MAIN:
      CALL KEY; 调用按键的程序,进行调时间
      CALL CHUFA; 获得分时秒的十位个位数字
      CALL DISPLAY; 调用数码管显示程序
      SJMP MAIN;
;***************************判断是否有键摁下进行调时*****************************
KEY:
      JNB P1.0 ,HJIA; 如果P1.0为低电平则跳到HJIA,作用是小时加
      JNB P1.1 ,HJIAN;如果P1.1为低电平则跳到HJIAN,作用是小时减
      JNB P1.2 ,MJIA; 如果P1.2为低电平则跳到MJIA,作用是分加
      JNB P1.3 ,MJIAN;如果P1.3为低电平则跳到MJIAN,作用是分减
      JNB P1.4 ,SJIA;如果P1.4为低电平则跳到SJIA,作用是秒加
      JNB P1.5 ,SJIAN;如果P1.5对为低电平则跳到SJIAN,作用是秒减
  BACK:
        RET;  子程序返回
  HJIA:
      CALL DELAY;    调用延时程序消除抖动
      JB P1.0 ,BACK; 如果P1.0是高电平,表示没有键摁下,返回子程序
    E1:
      JNB P1.0 ,F1;如果P1.0为低电平,则跳到F1
      MOV A,HOUR;
      CJNE A ,#24,D1;判断小时是否达到24以免溢出,不等于则跳到D1
      RET;
    D1:
      INC HOUR;摁键摁下,则将HOUR的值加1
      RET;
  F1:  CALL DISPLAY; 调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E1;     
  HJIAN:
      CALL DELAY;  调用延时程序消除抖动
      JB P1.1 ,BACK;如果P1.1是高电平,表示没有键摁下,返回子程序
    E2:
      JNB P1.1 ,F2; 如果P1.1为低电平,则跳到F2
      MOV A,HOUR;
      CJNE A ,#0,D2;    判断小时是否减到00以免溢出,不等于则跳到D2
      RET;
    D2:
      DEC HOUR;        摁键摁下,则将HOUR的值减1
      RET;
  F2:  CALL DISPLAY;  调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E2;
  MJIA:
哈尔滨餐馆      CALL DELAY;      调用延时程序消除抖动
      JB P1.2 ,BACK;  如果P1.2是高电平,表示没有键摁下,返回子程序
    E3:
q伤感网名      JNB P1.2 ,F3;  如果P1.2为低电平,则跳到F1
      MOV A,MINUTE;
      CJNE A ,#60,D3;    判断分钟是否到达60以免溢出,不等于则跳到D3
      RET;
    D3:
      INC MINUTE;    摁键摁下,则将MINUTE的值加1
      RET;
  F3:  CALL DISPLAY;  调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E3; 
  MJIAN:
      CALL DELAY;    调用延时程序消除抖动
      JB P1.3 ,BACK;  如果P1.3是高电平,表示没有键摁下,返回子程序
    E4:
      JNB P1.3 ,F4; 如果P1.3为低电平,则跳到F4
      MOV A,MINUTE;
      CJNE A ,#0,D4;    判断分钟是否减到00以免溢出,不等于则跳到D4
      RET;
    D4:
      DEC MINUTE;    摁键摁下,则 将MINUTE值减1
      RET;
  F4:  CALL DISPLAY;  调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E4;
    SJIA:
      CALL DELAY; 调用延时程序消除抖动
      JB P1.4 ,BACK; 如果P1.4是高电平,表示没有键摁下,返回子程序
    E5:
      JNB P1.4 ,F5;如果P1.4为低电平,则跳到F5
      MOV A,SECOND;
      CJNE A ,#60,D5;    判断秒钟是否到达60以免溢出,不等于则跳到D5
      RET;
    D5:
      INC SECOND; 摁键摁下,则将SECOND的值加1
      RET;
  F5:  CALL DISPLAY; 调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E5; 
 
  SJIAN:
      CALL DELAY; 调用延时程序消除抖动
      JB P1.5 ,BACK; 如果P1.5是高电平,表示没有键摁下,返回子程序
    E6:
      JNB P1.5 ,F6;如果P1.5为低电平,则跳到F6
      MOV A,SECOND;
      CJNE A ,#0,D6;判断秒钟是否减到00以免溢出,不等于则跳到D6
      RET;肉脯的做法
22年高考时间    D6:
      DEC SECOND;摁键摁下,则将SECOND减1
      RET;
  F6:  CALL DISPLAY;  调用显示,这样不会使得长久摁下未放开数码管变暗
        SJMP E6;
        RET
               
  /*MJIAN:
          CALL DELAY ;
          JB P1.3,BACK;
          JNB P1.3,$;
          MOV A ,MINUTE ;
          CJNE A ,#0,D6;
          RET;
      D6:
          DEC MINUTE;
          RET;    */
什么是幸福 作文         
   
;****************************数码管显示程序*****************************************************
DISPLAY:
        MOV A ,SGEWEI;    将分钟的各位数字给A
        MOVC A,@A+DPTR;    将A+DPTR在表中对应的数赋值给A
        MOV P0,A;    将段码显示的值送得P0口
        SETB P2.5;    将P2.5口置高,对应的数码管显示
        CALL DELAY;    调用延时程序,亮一段时间
        CLR P2.5;    置低,数码管熄灭
        MOV A ,SSHIWEI;    将分钟的十位数字给A
        MOVC A,@A+DPTR;    将A+DPTR在表中对应的数赋值给A
        MOV P0,A;      将段码显示的值送得P0口
        SETB P2.4;      将P2.4口置高,对应的数码管显示
        CALL DELAY;        调用延时程序,亮一段时间
        CLR P2.4;        置低,数码管熄灭
        MOV A ,MGEWEI;    将秒钟的个位数字给A
        MOVC A,@A+DPTR;    将A+DPTR在表中对应的数赋值给A
        MOV P0,A;        将段码显示的值送得P0口
        SETB P2.3;        将P2.3口置高,对应的数码管显示
        CALL DELAY;        调用延时程序,亮一段时间
        CLR P2.3;        置低,数码管熄灭
        MOV A ,MSHIWEI;    将秒钟的十位数字给A
        MOVC A,@A+DPTR;    将A+DPTR在表中对应的数赋值给A
        MOV P0,A;        将段码显示的值送得P0口
        SETB P2.2;        将P2.2口置高,对应的数码管显示
        CALL DELAY;        调用延时程序,亮一段时间
        CLR P2.2;          置低,数码管熄灭
        MOV A ,HGEWEI;      将小时的十位数字给A
        MOVC A,@A+DPTR;      将A+DPTR在表中对应的数赋值给A
        MOV P0,A;          将段码显示的值送得P0口
        SETB P2.1;          将P2.1口置高,对应的数码管显示
        CALL DELAY;          调用延时程序,亮一段时间
        CLR P2.1;          置低,数码管熄灭
       
        MOV A ,HSHIWEI;        将小时的个位数字给A
        MOVC A,@A+DPTR;        将A+DPTR在表中对应的数赋值给A
        MOV P0,A;            将段码显示的值送得P0口
        SETB P2.0;            将P2.0口置高,对应的数码管显示
        CALL DELAY;            调用延时程序,亮一段时间
>好听的女孩名字大全

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。