找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2719|回復(fù): 2
收起左側(cè)

基于51單片機的數(shù)碼管時鐘匯編語言代碼與Proteus仿真圖

[復(fù)制鏈接]
ID:1043929 發(fā)表于 2022-9-5 19:04 | 顯示全部樓層 |閱讀模式
51hei.gif
1 - Proteus 8 Professional - 原理圖繪制 2022_9_4 23_04_43.png

單片機匯編語言源程序如下:
  1.         //R1 秒 R2 分 R3 時
  2.         SETUP BIT P3.0
  3.         UP    BIT P3.3
  4.         OK    BIT P3.5
  5.         FLAG  EQU 30H   //0不設(shè)置 1設(shè)置時 2設(shè)置分 3設(shè)置秒
  6. ORG 0000H
  7. AJMP AA
  8. ORG 001BH
  9. LJMP DINGSHI
  10. ORG 0045H
  11. AA:
  12.         MOV SP,#60H
  13.         MOV TMOD,#10H
  14.         MOV TH1,#3CH
  15.         MOV TL1,#0B0H   ;定時器1定時50毫秒
  16.         MOV IE,#88H
  17.         SETB TR1
  18.         SETB F0
  19. LOOP:
  20.         LCALL XIANSHI
  21.         ACALL SHEZHI;設(shè)置時間
  22.         SJMP LOOP
  23. DINGSHI:
  24.         PUSH ACC
  25.         PUSH PSW
  26.         MOV TH1,#3CH
  27.         MOV TL1,#0B0H
  28.         INC R7
  29.         CJNE R7,#14H,FH   ;20次為1秒
  30.         MOV R7,#00H
  31.         
  32.         INC R1
  33.         CJNE R1,#3CH,FH    ;60
  34.         MOV R1,#00H
  35.         INC R2
  36.         CJNE R2,#3CH,FH    ;60
  37.         MOV R2,#00H
  38.         INC R3
  39.         CJNE R3,#18H,FH  ;24
  40.         MOV R3,#00H
  41. FH:
  42. POP PSW
  43. POP ACC
  44. RETI
  45. XIANSHI:
  46.         MOV DPTR,#TABLE;共陽段碼表
  47.         INC R4
  48.         MOV A,FLAG
  49.         CJNE A,#1,XS    //設(shè)置時的時候閃爍
  50.         CLR C
  51.         CJNE R4,#128,XS1 //相比較 看標志位
  52.         XS1:
  53.         JC XS2   //R4小于128的時候不顯示時 大于等于128的時候顯示
  54.         XS:
  55.         MOV A,R3                //將時拆分為個位和十位 分別用一位數(shù)碼管顯示
  56.         MOV B,#0AH
  57.         DIV AB
  58.         MOVC A,@A+DPTR  //按數(shù)值取相應(yīng)的段碼
  59.         MOV P0,A        
  60.         MOV P2,#0FEH
  61.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  62.         MOV P2,#0FFH
  63.         
  64.         MOV A,B
  65.         MOVC A,@A+DPTR        
  66.         MOV P0,A        
  67.         MOV P2,#0FDH
  68.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  69.         MOV P2,#0FFH
  70.         
  71.         XS2:
  72.         MOV P0,#40H              //顯示橫杠‘-’
  73.         MOV P2,#0FBH
  74.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  75.         MOV P2,#0FFH
  76.         
  77.         
  78.         MOV A,FLAG
  79.         CJNE A,#2,XF    //設(shè)置分的時候閃爍
  80.         CLR C
  81.         CJNE R4,#128,XF1 //相比較 看標志位
  82.         XF1:
  83.         JC XF2   //R4小于128的時候不顯示分 大于等于128的時候顯示
  84.         XF:
  85.         MOV A,R2                //將分拆分為個位和十位 分別用一位數(shù)碼管顯示
  86.         MOV B,#0AH
  87.         DIV AB
  88.         MOVC A,@A+DPTR  //按數(shù)值取相應(yīng)的段碼
  89.         MOV P0,A        
  90.         MOV P2,#0F7H
  91.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  92.         MOV P2,#0FFH
  93.         
  94.         MOV A,B
  95.         MOVC A,@A+DPTR        
  96.         MOV P0,A        
  97.         MOV P2,#0EFH
  98.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  99.         MOV P2,#0FFH
  100.         
  101.         XF2:
  102.         MOV P0,#40H              //顯示橫杠‘-’
  103.         MOV P2,#0DFH
  104.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  105.         MOV P2,#0FFH
  106.         
  107.         
  108.         MOV A,FLAG
  109.         CJNE A,#3,XM    //設(shè)置秒的時候閃爍
  110.         CLR C
  111.         CJNE R4,#128,XM1 //相比較 看標志位
  112.         XM1:
  113.         JC XM2   //R4小于128的時候不顯示秒 大于等于128的時候顯示
  114.         XM:
  115.         MOV A,R1               //將秒拆分為個位和十位 分別用一位數(shù)碼管顯示
  116.         MOV B,#0AH
  117.         DIV AB
  118.         MOVC A,@A+DPTR  //按數(shù)值取相應(yīng)的段碼
  119.         MOV P0,A        
  120.         MOV P2,#0BFH
  121.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  122.         MOV P2,#0FFH
  123.         
  124.         MOV A,B
  125.         MOVC A,@A+DPTR        
  126.         MOV P0,A        
  127.         MOV P2,#7FH
  128.         DJNZ R5,[        DISCUZ_CODE_1        ]nbsp;      
  129.         MOV P2,#0FFH
  130.         XM2:
  131.         RET

  132. SHEZHI:
  133.         JB SETUP,K0
  134.         JNB SETUP,$
  135.         CLR TR1      //設(shè)置的時候停止定時器
  136.         INC FLAG
  137.         MOV A,FLAG
  138.         CJNE A,#4,SR
  139.         MOV FLAG,#1
  140.         SJMP SR
  141. K0:
  142.         JB OK,K1
  143.         JNB OK,$
  144.         MOV FLAG,#0  //退出設(shè)置模式
  145.         SETB TR1      //設(shè)置完之后啟動定時器
  146.         SJMP SR
  147. K1:        
  148.         MOV A,FLAG
  149.         JZ SR              //A為0則跳轉(zhuǎn)到SR
  150.         JB UP,SR
  151.         JNB UP,$
  152.         CJNE A,#1,K2
  153.         INC R3
  154.         CJNE R3,#24,SR
  155.         MOV R3,#0
  156.         SJMP SR
  157. K2:
  158.         CJNE A,#2,K3
  159.         INC R2
  160.         CJNE R2,#60,SR
  161.         MOV R2,#0
  162.         SJMP SR
  163. K3:
  164.         CJNE A,#3,SR
  165.         INC R1
  166.         CJNE R1,#60,SR
  167.         MOV R1,#0
  168.         SJMP SR        
  169. SR:
  170. RET
  171.         
  172. TABLE:
  173.         DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH    ;0-9
  174.         END
復(fù)制代碼

匯編Keil代碼與Proteus8.8仿真下載: 仿真代碼.7z (49.45 KB, 下載次數(shù): 69)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1053345 發(fā)表于 2022-11-23 21:49 | 顯示全部樓層
有沒有c語言文件
回復(fù)

使用道具 舉報

ID:1077534 發(fā)表于 2023-6-16 22:54 | 顯示全部樓層
你好,你這里的keil使用的是什么版本
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表