找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

單片機(jī)溫度計(jì)匯編語(yǔ)言詳細(xì)注釋 數(shù)碼管顯示

[復(fù)制鏈接]
ID:542680 發(fā)表于 2019-5-24 19:50 | 顯示全部樓層 |閱讀模式
數(shù)碼管溫度計(jì).png

單片機(jī)源程序如下:
  1. RG 0000H  ;目標(biāo)程序存放地址從0000H開始
  2. DQ EQU P0.0          ;賦值DQ為P0.0
  3. MOV DPTR,#TAB ;數(shù)據(jù)指針地址
  4. ACALL CHU ;初始化序列
  5.            MOV A,#0CCH ;發(fā)送忽略ROM指令
  6.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  7.         MOV A,#4EH ;發(fā)送寫暫存器指令
  8.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  9.         MOV A,#7DH ;設(shè)定TH上限報(bào)警值125℃
  10.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  11.         MOV A,#0B7H ;設(shè)定TL下限報(bào)警值零下55℃
  12.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  13.         MOV A,#03H ;設(shè)定默認(rèn)精度12位
  14.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  15.         MOV A,#0CCH ;發(fā)送忽略ROM指令
  16.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  17.         MOV A,#48H ;發(fā)送拷貝暫存器指令,將暫存器的數(shù)據(jù)保存至EEPROM
  18.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  19.     ACALL SI  ;調(diào)用延時(shí)子程序大于10us即可
  20. LSP:ACALL CHU ;初始化序列
  21.            MOV A,#0CCH ;發(fā)送忽略ROM指令
  22.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  23.         MOV A,#44H ;發(fā)送溫度轉(zhuǎn)換指令
  24.         ACALL XUS ;調(diào)用數(shù)據(jù)發(fā)送子程序
  25.         ACALL YUA  ;調(diào)用延時(shí)子程序
  26.         ACALL YUA  ;調(diào)用延時(shí)子程序
  27. VPA:ACALL SXI  ;調(diào)用溫度處理模塊程序
  28.         MOV B,A          ;第一次溫度值放于寄存器B
  29.         ACALL SXI ;調(diào)用溫度處理模塊子程序
  30.         CJNE A,B,VPA ;比較兩次溫度是否相等
  31.         ACALL ACS  ;調(diào)用溫度數(shù)據(jù)裁分程序
  32.     MOV A,15H  ;拷貝數(shù)據(jù)位數(shù)標(biāo)志
  33.         CJNE A,#0FFH,LSL  ;判斷數(shù)據(jù)位數(shù)
  34.         MOV A,R4  ;獲取百位數(shù)據(jù)
  35.         ACALL ZXM ;調(diào)用字形碼查詢子程序
  36.         MOV P3,#01H         ;百位數(shù)碼管開啟
  37.         MOV P2,A  ;加載百位數(shù)碼管字形碼
  38.         ACALL YUA ;調(diào)用延時(shí)子程序
  39.     SJMP LSC  ;轉(zhuǎn)移至十位數(shù)碼管顯示程序段
  40. LSL:MOV A,13H  ;拷貝溫度數(shù)據(jù)符號(hào)標(biāo)志
  41.     CJNE A,#0F0H,LSC ;判斷溫度正負(fù)值
  42.         MOV A,14H  ;拷貝十位標(biāo)志位
  43.     CJNE A,#0FFH,IEC ;判斷數(shù)據(jù)是否是2位數(shù)據(jù)
  44.     MOV P3,#01H         ;開啟百位數(shù)碼管
  45.         MOV P2,#0BFH  ;顯示負(fù)號(hào)字形碼
  46.         ACALL YUA  ;調(diào)用延時(shí)子程序
  47.         SJMP YYV ;轉(zhuǎn)移至個(gè)位數(shù)據(jù)程序段
  48. IEC:MOV P3,#02H        ;單獨(dú)開啟十位數(shù)碼管
  49.     MOV P2,#0BFH  ;顯示負(fù)號(hào)字形碼
  50.         ACALL YUA  ;調(diào)用延時(shí)子程序
  51.         SJMP POB  ;轉(zhuǎn)移至個(gè)位數(shù)碼管
  52. LSC:MOV A,14H  ;拷貝十位數(shù)據(jù)標(biāo)志
  53.     CJNE A,#0FFH,POB ;判斷數(shù)據(jù)是否是十位數(shù)據(jù)
  54. YYV:MOV A,R3 ;拷貝十位溫度值
  55.         ACALL ZXM  ;調(diào)用字形碼查詢子程序
  56.         MOV P3,#02H        ;單獨(dú)開啟十位數(shù)碼管
  57.         MOV P2,A   ;加載溫度值數(shù)據(jù)
  58.         ACALL YUA  ;調(diào)用延時(shí)子程序
  59. POB:MOV A,R2  ;拷貝個(gè)位溫度值數(shù)據(jù)
  60.     ACALL ZXM        ;調(diào)用字形碼查詢子程序
  61.         MOV P3,#04H         ;單獨(dú)開啟個(gè)位數(shù)碼管
  62.         MOV P2,A  ;加載個(gè)位數(shù)據(jù)值
  63.         ACALL YUA ;調(diào)用延時(shí)子程序
  64.         MOV A,R5  ;拷貝錯(cuò)誤標(biāo)志寄存器數(shù)據(jù)
  65.         CJNE A,#0CCH,LSP ;判斷數(shù)據(jù)是否正常接收,由從機(jī)產(chǎn)生的未知錯(cuò)誤
  66.         SJMP $   ;數(shù)據(jù)接收嚴(yán)重錯(cuò)誤,或設(shè)置錯(cuò)誤,等待用戶修改



  67. CHU:CLR DQ   ;初始化開始                                 //初始化序列//
  68.         MOV 10H,#240  ;設(shè)定復(fù)位脈沖480us
  69.         DJNZ 10H,$                ;復(fù)位脈沖需要 X>480us
  70.         SETB DQ     ;復(fù)位脈沖發(fā)送結(jié)束
  71.         MOV 10H,#30 ;設(shè)定存在脈沖等待時(shí)間
  72.         DJNZ 10H,$ ;等待時(shí)間需要15us-60us
  73.         MOV 10H,#60  ;設(shè)定存在脈沖存在時(shí)間(小于等于)≤180us
  74. EPC:JB DQ,CPE      ;檢測(cè)是否有存在脈沖  k=30us
  75.         SJMP SPC     ;檢測(cè)到存在脈沖
  76. CPE:DJNZ 10H,EPC ;判斷存在脈沖存在時(shí)間是否超出?  k=120us
  77.     SJMP CHU  ;未檢測(cè)到存在脈沖,重新初始化序列
  78. SPC:JNB DQ,SPC ;等待存在脈沖結(jié)束
  79.     RET                           ;初始化序列完成,程序返回。!






  80. XUS:MOV 11H,#8 ;定義數(shù)據(jù)字節(jié)字?jǐn)?shù)8bit         //數(shù)據(jù)發(fā)送程序//
  81. RKP:CLR DQ ;寫時(shí)序開始        
  82.     RRC A ;加載發(fā)送數(shù)據(jù)           
  83.         MOV 10H,#28        ;設(shè)定數(shù)據(jù)保持時(shí)間  
  84.         JNC EBP ;判斷數(shù)據(jù)寫時(shí)序段         
  85.         SETB DQ        ;數(shù)據(jù)寫1時(shí)序               
  86. EBP:DJNZ 10H,$ ;寫時(shí)序保持56us
  87.     SETB DQ        ;據(jù)寫時(shí)序結(jié)束數(shù)         
  88.         DJNZ 11H,RKP ;數(shù)據(jù)字節(jié)數(shù)
  89.         RET                                   ;數(shù)據(jù)發(fā)送完成,程序返回。!


復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:99987 發(fā)表于 2019-5-25 15:48 | 顯示全部樓層
此匯編程序不完整,無(wú)法工作。
回復(fù)

使用道具 舉報(bào)

ID:559519 發(fā)表于 2019-6-14 12:58 | 顯示全部樓層
程序不完整  TAB表格并沒(méi)有定義   缺少0-9的LED顯示定義
回復(fù)

使用道具 舉報(bào)

ID:981034 發(fā)表于 2021-11-26 10:01 | 顯示全部樓層
沒(méi)法編譯
回復(fù)

使用道具 舉報(bào)

ID:404454 發(fā)表于 2022-2-10 09:31 | 顯示全部樓層
會(huì)用匯編的都是牛人。
回復(fù)

使用道具 舉報(bào)

ID:1032257 發(fā)表于 2022-6-18 09:27 來(lái)自手機(jī) | 顯示全部樓層
有沒(méi)有大佬能補(bǔ)充一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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