找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3670|回复: 0
打印 上一主题 下一主题
收起左侧

单片机多功能数字钟 汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-27 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. ;张培         
  2. ;本程序实现外控控数字钟
  3. ;功能:1.计时
  4. ;      2.3种显示模式
  5. ;        时间显示模式
  6. ;   月日显示模式
  7. ;   温度显示模式
  8. ;******************************************************
  9. ;字节单元定义
  10. TEMPER_L     EQU       29H;用于保存读出温度的低8位
  11. TEMPER_H     EQU       28H;用于保存读出温度的高8位
  12. FLAG1        EQU       38H;是否检测到DS18B20标志位
  13. a_bit        EQU       20H;数码管个位数存放内存位置
  14. b_bit        EQU       21H;数码管十位数存放内存位置
  15. PIANXUAN     EQU       P3 ;P3为片选口
  16. SHUCHU       EQU       P2 ;P2为输出
  17. MIAO         EQU       30H;秒存储单元
  18. FEN          EQU       31H;分存储单元
  19. SHI          EQU       32H;时存储单元
  20. SHUZI        EQU       33H;中转存储单元
  21. YUE          EQU       34H;月存储单元
  22. CRI          EQU       35H;日存储单元
  23. DAIMAZHI     EQU       36H;代码存储单元
  24. LINGSHI      EQU       37H;闹铃时存储单元
  25. LINGFEN      EQU       50H;闹铃分存储单元
  26. KONGSHI   EQU       39H;外部控制时存储单元
  27. KONGFEN      EQU       61H;外部控制时存储单元
  28. QIEHUAN      BIT       22H.0;切换标志位
  29. ANJIAN       BIT       22H.1;按键1标志位
  30. ANJIAN1      BIT       22H.2;按键2标志位
  31. ANJIAN2      BIT       22H.3;按键3标志位
  32. ANJIAN3      BIT       22H.4;按键4标志位
  33. ANJIAN4      BIT       22H.5
  34. ANJIAN5      BIT       23H.2
  35. WENDU        BIT       22H.6;温度标志位
  36. GONG         BIT       22H.7
  37. C_0          BIT       23H.0;20MS的标志位
  38. SHANSHUO     BIT       23H.1
  39. ;**********************************************************
  40. ;**************************主程序**************************
  41.              ORG       0000H
  42.              JMP       START
  43.           ORG       000BH
  44.           JMP       TT0
  45.              ORG       0030H
  46. START:  CALL      CHUSHIHUA
  47.   
  48. MAIN:    JNB       C_0,MAIN       ;节拍等待
  49.           CLR       C_0  
  50.        CALL      JIACHULI    ;计算时间
  51.     CALL      SHJIAN_GN   ;判断时间闹铃及控制功能
  52.    
  53.     CALL      PANWENDU    ;温度按键判断
  54.     JNB       WENDU,NEXT0   ;
  55.     CALL      XIANSHIWENDU   ;温度标志位为1就显示温度
  56.     JMP       MAIN
  57.    
  58.     NEXT0:CALL      PANGONGNENG   ;判断功能键
  59.           JNB      GONG,NEXT1   ;没有功能键按下显示时间
  60.      CALL     CANSHU    ;代码加一
  61.     CALL     XIANSHIMA    ;有功能键按下,则显示功能代码
  62.     CALL     SHEZHI    ;根据代码设置相应的功能
  63.     JMP      MAIN     ;返回
  64.    
  65.     NEXT1:CALL     PANANJIAN    ;切换月日、时间显示
  66.     JNB      QIEHUAN,NEXT   ;没有按键按下,则显示时间
  67.     CALL     XIANSHI2    ;显示月日
  68.     JMP      MAIN     ;返回
  69.      NEXT:CALL     XIANSHI1    ;显示时间
  70.     DEC      66H
  71.     MOV      A,66H
  72.     CJNE     A,#00,NEXT5
  73.     MOV      66,#50
  74.           CPL      P2.7
  75.     NEXT5:JMP      MAIN     ;返回
  76. ;========================设置子程序========================
  77.         SHEZHI:MOV   A,DAIMAZHI
  78.          MOV   DPTR,#TAB1
  79.       JMP   @A+DPTR
  80.     TAB1:AJMP  SUB0
  81.          AJMP  SUB1
  82.       AJMP  SUB2
  83.          AJMP  SUB3
  84.       AJMP  SUB4
  85.          AJMP  SUB5
  86.       AJMP  SUB6
  87.          AJMP  SUB7
  88. ;========================设置月份===========================
  89.     SUB0:MOV   SHUZI,YUE
  90.          CALL  XIANSHI3
  91.          JB    P1.3,PAN
  92.          JB    ANJIAN2,PAN
  93.       SETB  ANJIAN2
  94.       INC   YUE
  95.       MOV   R1,YUE
  96.       CJNE  R1,#13,PAN
  97.       MOV   YUE,#01
  98.            PAN:JNB   P1.3,PANJIAN1
  99.          CLR   ANJIAN2
  100.    PANJIAN1:JB    P1.4,TAIQI3
  101.          JB    ANJIAN3,TAIQI3
  102.       SETB  ANJIAN3
  103.       DEC   YUE
  104.       MOV   R1,YUE
  105.       CJNE  R1,#00,TAIQI3
  106.       MOV   YUE,#12
  107.   TAIQI3:JNB   P1.4,OUT7
  108.         CLR   ANJIAN3
  109.     OUT7:RET
  110. ;=========================设置日=============================  
  111.     SUB1:MOV   SHUZI,CRI
  112.          CALL  XIANSHI3
  113.          JB    P1.3,TAIQI4
  114.          JB    ANJIAN2,TAIQI4
  115.       SETB  ANJIAN2
  116.       INC   CRI
  117.       MOV   R1,CRI
  118.       CJNE  R1,#32,TAIQI4
  119.       MOV   CRI,#01
  120.   TAIQI4:JNB   P1.3,PANJIAN2
  121.         CLR   ANJIAN2
  122.    PANJIAN2:JB    P1.4,TAIQI5
  123.          JB    ANJIAN3,TAIQI5
  124.       SETB  ANJIAN3
  125.       DEC   CRI
  126.       MOV   R1,CRI
  127.       CJNE  R1,#00,TAIQI5
  128.       MOV   CRI,#32
  129.   TAIQI5:JNB   P1.4,OUT8
  130.         CLR   ANJIAN3
  131.     OUT8:RET
  132. ;==========================设置分=============================  
  133.     SUB2:MOV   SHUZI,FEN
  134.          CALL  XIANSHI3
  135.          JB    P1.3,TAIQI8
  136.          JB    ANJIAN2,TAIQI8
  137.       SETB  ANJIAN2
  138.       INC   FEN
  139.       MOV   R1,FEN
  140.       CJNE  R1,#60,TAIQI8
  141.       MOV   FEN,#01
  142.   TAIQI8:JNB   P1.3,PANJIAN4
  143.         CLR   ANJIAN2
  144.    PANJIAN4:
  145.             JB    P1.4,TAIQI9
  146.          JB    ANJIAN3,TAIQI9
  147.       SETB  ANJIAN3
  148.       DEC   FEN
  149.       MOV   R1,FEN
  150.       CJNE  R1,#00,TAIQI9
  151.       MOV   FEN,#59
  152.   TAIQI9:JNB   P1.4,OUT10
  153.         CLR   ANJIAN3
  154.    OUT10:RET
  155. ;==========================设置时===========================
  156.     SUB3:MOV   SHUZI,SHI
  157.          CALL  XIANSHI3
  158.          JB    P1.3,TAIQI6
  159.          JB    ANJIAN2,TAIQI6
  160.       SETB  ANJIAN2
  161.       INC   SHI
  162.       MOV   R1,SHI
  163.       CJNE  R1,#24,TAIQI6
  164.       MOV   SHI,#00
  165.   TAIQI6:JNB   P1.3,PANJIAN3
  166.         CLR   ANJIAN2
  167.    PANJIAN3:JB    P1.4,TAIQI7
  168.          JB    ANJIAN3,TAIQI7
  169.       SETB  ANJIAN3
  170.       DEC   SHI
  171.       MOV   R1,SHI
  172.       CJNE  R1,#00,TAIQI7
  173.       MOV   SHI,#23
  174.   TAIQI7:JNB   P1.4,OUT9
  175.         CLR   ANJIAN3
  176.     OUT9:RET
  177. ;==========================设置闹铃时===========================
  178.     SUB4:MOV   SHUZI,LINGSHI
  179.          CALL  XIANSHI3
  180.          JB    P1.3,TAIQI10
  181.          JB    ANJIAN2,TAIQI10
  182.       SETB  ANJIAN2
  183.       INC   LINGSHI
  184.       MOV   R1,LINGSHI
  185.       CJNE  R1,#24,TAIQI10
  186.       MOV   LINGSHI,#00
  187.     TAIQI10:JNB   P1.3,PANJIAN5
  188.         CLR   ANJIAN2
  189.    PANJIAN5:JB    P1.4,TAIQI11
  190.          JB    ANJIAN3,TAIQI11
  191.       SETB  ANJIAN3
  192.       DEC   LINGSHI
  193.       MOV   R1,LINGSHI
  194.       CJNE  R1,#00,TAIQI11
  195.       MOV   LINGSHI,#23
  196.     TAIQI11:JNB   P1.4,OUT11
  197.         CLR   ANJIAN3
  198.    OUT11:RET
  199. ;==========================设置闹铃分===========================  
  200.     SUB5:MOV   SHUZI,LINGFEN
  201.          CALL  XIANSHI3
  202.          JB    P1.3,TAIQI12
  203.          JB    ANJIAN2,TAIQI12
  204.       SETB  ANJIAN2
  205.       INC   LINGFEN
  206.       MOV   R1,LINGFEN
  207.       CJNE  R1,#60,TAIQI12
  208.       MOV   LINGFEN,#01
  209.     TAIQI12:JNB   P1.3,PANJIAN6
  210.         CLR   ANJIAN2
  211.    PANJIAN6:JB    P1.4,TAIQI13
  212.          JB    ANJIAN3,TAIQI13
  213.       SETB  ANJIAN3
  214.       DEC   LINGFEN
  215.       MOV   R1,LINGFEN
  216.       CJNE  R1,#00,TAIQI13
  217.       MOV   LINGFEN,#59
  218.     TAIQI13:JNB   P1.4,OUT12
  219.         CLR   ANJIAN3
  220.    OUT12:RET
  221. ;==========================设置控制时===========================
  222.     SUB6:MOV      SHUZI,KONGSHI
  223.          CALL  XIANSHI3
  224.          JB    P1.3,TAIQI14
  225.          JB    ANJIAN2,TAIQI14
  226.       SETB  ANJIAN2
  227.       INC   KONGSHI
  228.       MOV   R1,KONGSHI
  229.       CJNE  R1,#24,TAIQI14
  230.       MOV   KONGSHI,#00
  231.     TAIQI14:JNB   P1.3,PANJIAN7
  232.         CLR   ANJIAN2
  233.    PANJIAN7:JB    P1.4,TAIQI15
  234.          JB    ANJIAN3,TAIQI15
  235.       SETB  ANJIAN3
  236.       DEC   KONGSHI
  237.       MOV   R1,KONGSHI
  238.       CJNE  R1,#00,TAIQI15
  239.       MOV   KONGSHI,#23
  240.     TAIQI15:JNB   P1.4,OUT13
  241.         CLR   ANJIAN3
  242.    OUT13:RET
  243. ;==========================设置控制分===========================  
  244.     SUB7:MOV   SHUZI,KONGFEN
  245.          CALL  XIANSHI3
  246.          JB    P1.3,TAIQI16
  247.          JB    ANJIAN2,TAIQI16
  248.       SETB  ANJIAN2
  249.       INC   KONGFEN
  250.       MOV   R1,KONGFEN
  251.       CJNE  R1,#60,TAIQI16
  252.       MOV   KONGFEN,#01
  253.     TAIQI16:JNB   P1.3,PANJIAN8
  254.         CLR   ANJIAN2
  255.    PANJIAN8:JB    P1.4,TAIQI17
  256.          JB    ANJIAN3,TAIQI17
  257.       SETB  ANJIAN3
  258.       DEC   KONGFEN
  259.       MOV   R1,KONGFEN
  260.       CJNE  R1,#00,TAIQI17
  261.       MOV   KONGFEN,#59
  262.     TAIQI17:JNB   P1.4,OUT14
  263.         CLR   ANJIAN3
  264.    OUT14:RET
  265. ;=======================闹铃与外部控制子程序====================
  266.   SHJIAN_GN:MOV      A,SHI
  267.             CJNE     A,LINGSHI,NEXT2
  268.    MOV      A,FEN
  269.    CJNE     A,LINGFEN,NEXT4
  270.    SETB     P1.6
  271.    JMP      NEXT2
  272.    NEXT4:CLR      P1.6
  273.    NEXT2:MOV      A,KONGSHI
  274.          CJNE     A,KONGSHI,NEXT3
  275.    MOV      A,FEN
  276.    CJNE     A,KONGFEN,NEXT3
  277.       NEXT3:RET
  278. ;===============温度时间显示切换判断子程序=================
  279.    PANWENDU:JB       P1.5,TAIQI0
  280.             JB       ANJIAN4,TAIQI0
  281.    SETB     ANJIAN4
  282.    CPL      WENDU
  283.   TAIQI0:JNB      P1.5,KK
  284.          CLR      ANJIAN4
  285.       KK:RET
  286. ;==========================显示3子程序==========================
  287.    XIANSHI3:CALL     JISUAN
  288.             MOV      DPTR,#TAB
  289.       MOVC     A,@A+DPTR
  290.       MOV      SHUCHU,A
  291.       MOV      PIANXUAN,#04H;显示十位
  292.       CALL     DELAY
  293.       MOV      PIANXUAN,#00H;关片选
  294.       MOV      A,B
  295.       MOVC     A,@A+DPTR
  296.       MOV      SHUCHU,A
  297.       MOV      PIANXUAN,#08H;显示个位
  298.       CALL     DELAY
  299.       MOV      PIANXUAN,#00H;关片选
  300.       
  301.       MOV      SHUCHU,#0BFH
  302.       MOV      PIANXUAN,#02H;
  303.       CALL     DELAY
  304.       MOV      PIANXUAN,#00H;关片选
  305.             RET
  306. ;=======================参数键判断子程序========================
  307.         CANSHU:JB     P1.2,TAIQI2
  308.             JB     ANJIAN5,TAIQI2
  309.       SETB   ANJIAN5
  310.       CALL   DAIMA    ;设置代码
  311.   TAIQI2:JNB    P1.2,OUT5
  312.          CLR    ANJIAN5
  313.        OUT5:RET
  314. ;========================代码子程序=============================
  315.          DAIMA:INC    DAIMAZHI
  316.          MOV    R7,DAIMAZHI
  317.       CJNE   R7,#08,PP
  318.       MOV    DAIMAZHI,#00
  319.       PP:RET
  320. ;========================显示代码===============================
  321.      XIANSHIMA:MOV    A,DAIMAZHI
  322.             MOV    DPTR,#TAB
  323.       MOVC   A,@A+DPTR
  324.       MOV    SHUCHU,A
  325.       MOV    PIANXUAN,#01H
  326.       CALL   DELAY
  327.       MOV    PIANXUAN,#00
  328.             RET
  329. ;=======================功能键判断子程序========================
  330.    PANGONGNENG:JB     P1.1,TAIQI1
  331.             JB     ANJIAN1,TAIQI1
  332.       SETB   ANJIAN1
  333.       CPL    GONG
  334.   TAIQI1:JNB    P1.1,OUT4
  335.          CLR    ANJIAN1
  336.        OUT4:RET
  337. ;=========================按键判断子程序========================
  338.     PANANJIAN:JB     P1.0,TAIQI
  339.             JB     ANJIAN,TAIQI
  340.       SETB   ANJIAN
  341.       CPL    QIEHUAN
  342.    TAIQI:JNB    P1.0,OUT1
  343.          CLR    ANJIAN
  344.        OUT1:RET
  345. ;***********************温度显示子程序*********************************
  346. ;    输入:
  347. ;    输出:
  348. ;实现功能:实现温度的显示   
  349.   XIANSHIWENDU:
  350.        LCALL     GET_TEMPER;调用读温度子程序
  351. ;进行温度显示
  352. ;显示范围00到99度,显示精度为1度
  353. ;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位
  354. ;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度
  355.           MOV     A,29H
  356.           MOV     C,40H;将28H中的最低位移入C
  357.           RRC     A
  358.            MOV     C,41H
  359.           RRC     A
  360.           MOV     C,42H
  361.           RRC     A
  362.           MOV     C,43H
  363.           RRC     A
  364.           MOV     29H,A
  365.     LCALL    DISPLAY;调用数码管显示子程序
  366.     RET      
  367. ; 这是DS18B20复位初始化子程序
  368. INIT_1820:
  369.         SETB     P3.5
  370.         NOP
  371.         CLR     P3.5
  372. ;主机发出延时537微秒的复位低脉冲
  373.         MOV     R1,#3
  374. TSR1:  
  375.         MOV     R0,#107
  376.         DJNZ     R0,$
  377.         DJNZ     R1,TSR1
  378.         SETB     P3.5;然后拉高数据线
  379.         NOP
  380.         NOP
  381.         NOP
  382.         MOV     R0,#25H
  383. TSR2:
  384.         JNB     P3.5,TSR3;等待DS18B20回应
  385.         DJNZ     R0,TSR2
  386.         LJMP     TSR4 ; 延时
  387. TSR3:
  388.        SETB     FLAG1 ; 置标志位,表示DS1820存在
  389.        LJMP     TSR5
  390. TSR4:
  391.         CLR     FLAG1 ; 清标志位,表示DS1820不存在
  392.        LJMP     TSR7
  393. TSR5:
  394.         MOV     R0,#117
  395. TSR6:
  396.        DJNZ     R0,TSR6 ; 时序要求延时一段时间
  397. TSR7:
  398.     SETB     P3.5
  399.     RET
  400. ; 读出转换后的温度值
  401. GET_TEMPER:
  402.         SETB  P3.5
  403.        LCALL     INIT_1820 ;先复位DS18B20
  404.         JB     FLAG1,TSS2
  405.         RET     ; 判断DS1820是否存在,若DS18B20不存在则返回
  406. TSS2:
  407.   MOV  A,#0CCH   ; 跳过ROM匹配
  408.     LCALL  WRITE_1820
  409.   MOV  A,#44H   ; 发出温度转换命令
  410.     LCALL     WRITE_1820
  411. ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
  412.     LCALL  DISPLAY
  413.     LCALL  INIT_1820 ;准备读温度前先复位
  414.      MOV  A,#0CCH  ; 跳过ROM匹配
  415.     LCALL     WRITE_1820
  416.      MOV  A,#0BEH  ; 发出读温度命令
  417.     LCALL  WRITE_1820
  418.     LCALL  READ_18200 ; 将读出的温度数据保存到35H/36H
  419.   RET
  420. ;写DS18B20的子程序(有具体的时序要求)
  421. WRITE_1820:
  422.         MOV  R2,#8;一共8位数据
  423.         CLR   C
  424. WR1:
  425.   CLR  P3.5
  426.   MOV  R3,#6
  427.   DJNZ  R3,$
  428.   RRC  A
  429.   MOV  P3.5,C
  430.   MOV  R3,#23
  431.   DJNZ  R3,$
  432.   SETB  P3.5
  433.   NOP
  434.   DJNZ  R2,WR1
  435.   SETB  P3.5
  436.   RET
  437. ; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据
  438. READ_18200:
  439.   MOV  R0,#2 ; 将温度高位和低位从DS18B20中读出
  440.   MOV  R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
  441. RE00:
  442.   MOV  R2,#8;数据一共有8位
  443. RE01:
  444.   CLR  C
  445.   SETB  P3.5
  446.   NOP
  447.   NOP
  448.    CLR  P3.5
  449.   NOP
  450.   NOP
  451.   NOP
  452.   SETB  P3.5
  453.   MOV  R3,#9
  454. RE10:
  455.   DJNZ  R3,RE10
  456.   MOV  C,P3.5
  457.   MOV  R3,#23
  458. RE20:
  459.   DJNZ  R3,RE20
  460.   RRC  A
  461.   DJNZ  R2,RE01
  462.   MOV  @R1,A
  463.   DEC  R1
  464.   DJNZ  R0,RE00
  465.   RET
  466. ;**********************显示子程序*****************************
  467. display:
  468.   mov     a,29H ;将29H中的十六进制数转换成10进制
  469.   mov     b,#10 ;10进制/10=10进制
  470.   div     ab
  471.   mov     b_bit,a ;十位在a
  472.   mov     a_bit,b ;个位在b
  473.   mov     dptr,#numtab ;指定查表启始地址
  474.   mov     r0,#8
  475. dpl1:
  476.         mov     r1,#255 ;显示1000次
  477. dplop:
  478.         mov     a,a_bit ;取个位数
  479.         MOVC    A,@A+DPTR ;查个位数的7段代码
  480.         mov     p2,a ;送出个位的7段代码
  481.    
  482.         SETB     p3.3 ;开个位显示
  483.         acall     d1ms ;显示1ms
  484.      CLR     p3.3
  485.         mov     a,b_bit ;取十位数
  486.      MOVC     A,@A+DPTR ;查十位数的7段代码
  487.      mov     p2,a ;送出十位的7段代码
  488.      SETB     p3.2 ;开十位显示
  489.      acall     d1ms ;显示1ms
  490.      CLR     p3.2
  491.     djnz     r1,dplop ;250次没完循环
  492.     djnz     r0,dpl1 ;4个250次没完循环
  493.     ret
  494. ;*************************延时子程序***************************
  495. ;    输入:
  496. ;  输出:
  497. ;实现功能:1MS延时(按12MHZ算)
  498. ;**************************************************************
  499. D1MS:
  500.      MOV R7,#80
  501.      DJNZ R7,$
  502. RET
  503. ;************************查表代码*******************************
  504. numtab:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  505. ;************************显示时分子程序*************************
  506. ;    输入:FEN,YUE
  507. ;    输出:A
  508. ;实现功能:实现时分的显示
  509.    
  510. XIANSHI1:  
  511.           MOV      SHUZI,FEN
  512.           CALL     JISUAN
  513.     MOV      DPTR,#TAB
  514.     MOVC     A,@A+DPTR
  515.     MOV      SHUCHU,A
  516.     MOV      PIANXUAN,#04H;显示分的十位
  517.     CALL     DELAY
  518.     MOV      PIANXUAN,#00H;关片选
  519.     MOV      A,B
  520.     MOVC     A,@A+DPTR
  521.     MOV      SHUCHU,A
  522.     MOV      PIANXUAN,#08H;显示分的个位
  523.     CALL     DELAY
  524.     MOV      PIANXUAN,#00H;关片选
  525.           MOV      SHUZI,SHI
  526.           CALL     JISUAN
  527.     MOVC      A,@A+DPTR
  528.     MOV      SHUCHU,A
  529.     MOV      PIANXUAN,#01H;显示时的十位
  530.     CALL     DELAY
  531.     MOV      PIANXUAN,#00H;关片选
  532.     MOV      A,B
  533.     MOVC     A,@A+DPTR
  534.     MOV      SHUCHU,A
  535.     MOV      PIANXUAN,#02H;显示时的个位
  536.     CALL     DELAY
  537.     MOV      PIANXUAN,#00H;关片选
  538.           RET
  539. ;************************显示月日子程序*************************
  540. ;    输入:CRI,YUE
  541. ;    输出:A
  542. ;实现功能:实现月日的显示
  543. XIANSHI2:
  544.              MOV      SHUZI,CRI
  545.     CALL     JISUAN
  546.     MOV      DPTR,#TAB
  547.     MOVC     A,@A+DPTR
  548.     MOV      SHUCHU,A
  549.     MOV      PIANXUAN,#04H;显示日的十位
  550.     CALL     DELAY
  551.     MOV      PIANXUAN,#00H;关片选
  552.     MOV      A,B
  553.     MOVC     A,@A+DPTR
  554.     MOV      SHUCHU,A  
  555.        MOV      PIANXUAN,#08H;显示日的个位
  556.     CALL     DELAY
  557.     MOV      PIANXUAN,#00H;关片选
  558.   
  559.           MOV      SHUZI,YUE
  560.           CALL     JISUAN
  561.     MOVC     A,@A+DPTR
  562.     MOV      SHUCHU,A
  563.     MOV      PIANXUAN,#01H;显示月的十位
  564.     CALL     DELAY
  565.     MOV      PIANXUAN,#00H;关片选
  566.     MOV      A,B
  567.     MOVC     A,@A+DPTR
  568.     MOV      SHUCHU,A
  569.     MOV      PIANXUAN,#02H;显示月的个位
  570.     CALL     DELAY
  571.     MOV      PIANXUAN,#00H;关片选
  572.     RET
  573. JIACHULI:
  574.     DJNZ     R4,OUT3;判断是否到一秒
  575.     MOV      R4,#50
  576.     INC      MIAO ;到一秒后秒位加1
  577.     MOV      R7,MIAO
  578.        CJNE     R7,#60,OUT3;判断是否到60秒
  579.     MOV      MIAO,#00
  580.     INC      FEN
  581.     MOV      R7,FEN
  582.     CJNE     R7,#60,OUT3;判断是否到60分
  583.     MOV      FEN,#00
  584.     INC      SHI
  585.     MOV      R7,SHI
  586.        CJNE     R7,#24,OUT3;判断是否都24小时
  587.     MOV      SHI,#00
  588.     INC      CRI;到24小时后把日加一
  589.     MOV      R7,CRI
  590.     MOV      R4,YUE
  591.     CJNE     R4,#01,JIXU1
  592.     CJNE     R7,#32,OUT3
  593.     INC      YUE
  594.     MOV      CRI,#00
  595.      OUT3:JMP      OUT2
  596.     JIXU1:CJNE     R4,#02,JIXU2
  597.     CJNE     R7,#29,OUT3
  598.     INC      YUE
  599.     MOV      CRI,#00
  600.     JMP      OUT2
  601.     JIXU2:CJNE     R4,#03,JIXU3
  602.     CJNE     R7,#32,OUT2
  603.     INC      YUE
  604.     MOV      CRI,#00
  605.     JMP      OUT2
  606.     JIXU3:CJNE     R4,#04,JIXU4
  607.     CJNE     R7,#31,OUT2
  608.     INC      YUE
  609.     MOV      CRI,#00
  610.     JMP      OUT2
  611.     JIXU4:CJNE     R4,#05,JIXU5
  612.     CJNE     R7,#32,OUT2
  613.     INC      YUE
  614.     MOV      CRI,#00
  615.     JMP      OUT2
  616.     JIXU5:CJNE     R4,#06,JIXU6
  617.     CJNE     R7,#31,OUT2
  618.     INC      YUE
  619.     MOV      CRI,#00
  620.     JMP      OUT2
  621.     JIXU6:CJNE     R4,#07,JIXU7
  622.     CJNE     R7,#32,OUT2
  623.     INC      YUE
  624.     MOV      CRI,#00
  625.     JMP      OUT2
  626.     JIXU7:CJNE     R4,#08,JIXU8
  627.     CJNE     R7,#32,OUT2
  628.     INC      YUE
  629.     MOV      CRI,#00
  630.     JMP      OUT2
  631.     JIXU8:CJNE     R4,#09,JIXU9
  632.     CJNE     R7,#31,OUT2
  633.     INC      YUE
  634.     MOV      CRI,#00
  635.     JMP      OUT2
  636.     JIXU9:CJNE     R4,#10,JIXU10
  637.     CJNE     R7,#32,OUT2
  638.     INC      YUE
  639.     JMP      OUT2
  640.    JIXU10:CJNE     R4,#11,JIXU11
  641.     CJNE     R7,#31,OUT2
  642.     INC      YUE
  643.     MOV      CRI,#00
  644.     JMP      OUT2
  645.    JIXU11:CJNE     R4,#12,OUT2
  646.     CJNE     R7,#32,OUT2
  647.     MOV      YUE,#01
  648.     MOV      CRI,#00
  649.    OUT2:RET
  650. ;**********************初始化子程序*************************
  651.    CHUSHIHUA:MOV       SP,#7FH
  652.     MOV       TMOD,#01H;T0工作方式1
  653.           MOV    TH0,#0B1H;20MS的初值
  654.           MOV       TL0,#0E0H
  655.           SETB      ET0;开启中断TO
  656.           SETB      EA ;开启中断总开关
  657.           SETB      TR0;定时器溢出标志位
  658.     CLR       QIEHUAN
  659.              CLR       ANJIAN
  660.     CLR       ANJIAN1
  661.     CLR       ANJIAN2
  662.     CLR       ANJIAN3
  663.     CLR       ANJIAN4
  664.     CLR       ANJIAN5
  665.     CLR       WENDU   ;显示温度标志位清0
  666.     CLR       SHANSHUO
  667.     CLR       GONG
  668.     CLR       P1.6
  669.           SETB      C_0
  670.     MOV       MIAO,#55
  671.     MOV       FEN,#59
  672.     MOV       SHI,#21
  673.     MOV       YUE,#06
  674.     MOV       CRI,#23
  675.     MOV       DAIMAZHI,#00
  676.     MOV       LINGSHI,#00
  677.     MOV       LINGFEN,#00
  678.     MOV       KONGSHI,#00
  679.     MOV       KONGFEN,#00
  680.     MOV       DPTR,#TAB
  681.     MOV       R4,#50
  682.     MOV       66H,#50
  683.     RET
  684. ;///////计算子程序///////////////////////
  685. ;输入:"30H"
  686. ;输出:"A,B"
  687. ;实现的功能:查A在TAB位置的数
  688.   JISUAN:
  689.       MOV     A,SHUZI
  690.     MOV     B,#10
  691.      DIV     AB
  692.     RET
  693. ;/////////////////中断到来重置初值程序/////////////////////////
  694. ;输入;无
  695. ;输出: 无
  696. ;实现的功能中断到来重置初值
  697.      TT0:
  698.           MOV     TH0,#0B1H
  699.        MOV       TL0,#0E0H
  700.        SETB      C_0
  701.        RETI
  702. ;//////////////////////////延时程序/////////////////////////
  703. ;输入;无
  704. ;输出: 无
  705. ;实现的功能:延时一段时间
  706.     DELAY:
  707.       MOV     R5,#20H
  708. L8:  MOV     R6,#20H
  709.    DJNZ    R6,$
  710.    DJNZ    R5,L8
  711.    RET
  712. TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
  713. ;///////结束//////////////////////////////
  714.      END   
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表