久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1083|回復: 1
打印 上一主題 下一主題
收起左側

求大佬看下單片機匯編程序吧,實在不知道哪里不對

[復制鏈接]
跳轉到指定樓層
樓主
我的仿真圖也改了下,用的共陽極數碼管,自己也用了別的顯示程序測了,沒得問題。但是我程序一仿真數碼管就沒得動靜
程序:TEMP_ZH EQU 30H       ;溫度存放單元
TEMPL   EQU        25H                  ;低字節存放
TEMPH   EQU 26H       ;高字節存放
TEMP_TH EQU 27H                  ;高溫報警溫度
GEW     EQU 24H       ;定義個位
SHI     EQU 23H       ;定義十位
BAI     EQU 22H       ;定義百位

K1      EQU P1.0
K2      EQU P1.1
K3      EQU P1.2

BUZ     EQU P2.4          ;蜂鳴
FLAG    EQU 21H.0          ;溫度傳感器標志位
DQ      EQU P3.3

;******************主程序************************
        ORG   0000H
                SJMP  START
                ORG   0030H
START:  MOV   SP,   #60H
                MOV   P0,   #0FFH  ;讓p0輸出高電平,熄滅數碼管
                MOV   P2,        #0F0H
                MOV   R7,   #0   
MIAN:   MOV   TEMP_TH, #85 ;設立高溫報警溫度為85
LOOP4:  ACALL RESET        ;18B20復位程序
LOOP1:        JNB   FLAG, LOOP4
LOOP:        ACALL ZXD                   ;調用讀取溫度子程序
                ACALL TURN                   ;調用數據轉化程序
                ACALL DISPLAY           ;調用顯示程序
LOOP2:        ACALL KEY                   ;調用鍵盤
                INC   TEMP_ZH
                JMP   LOOP

;*******************DS18B20復位初始化程序************************
RESET:  SETB  DQ
        NOP
                NOP
                CLR   DQ
                MOV   R1,   #3
DLY:    MOV   R0,   #107
        DJNZ  R0,   $
                DJNZ  R1,   DLY                ;延時648μs程序
                SETB  DQ                         ;拉高數據線
                NOP
                NOP
                NOP
                MOV   R0,   #25H
T2:     JNB   DQ,   T3
        DJNZ  R0,   T2
                JMP   T4
T3:     SETB  FLAG
        JMP   T5
T4:     CLR   FLAG
        JMP   T7
T5:     MOV   R0,   #249
T6:     DJNZ  R0,   T6
T7:     SETB  DQ
        RET
;*************************溫度讀寫指令**************************
ZXD:    MOV   SP,   #60H
        ACALL RESET               
                JNB   FLAG, ZXD          
                MOV   A,    #0CCH          ;跳過rom指令
                ACALL WRITE
                MOV   A,    #44H          ;溫度轉換指令
                ACALL WRITE
                MOV   R2,   #6
DLY1:        MOV   R1,   #255
DLY2:        MOV   R0,   #255
        DJNZ  R0,   $
                DJNZ  R1,   DLY2
                DJNZ  R2,   DLY1          ;延時780ms
                ACALL RESET
                MOV   A,    #0CCH
                ACALL WRITE
                MOV   A,    #0BEH          ;讀取寄存器指令
                ACALL WRITE
                ACALL READ                          ;讀取溫度
                RET



;*************************寫入DS18B20程序***********************
WRITE:  MOV   R2,   #8                 ;一共8位數據
        CLR   C
WR1:        CLR   DQ
                MOV   R3,   #6
                DJNZ  R3,   $
                RRC   A                                 ;右移A將數據給C
                MOV   DQ,    C                 ;寫入一個位
                MOV   R0,   #23
                DJNZ  R0,   $
                SETB  DQ
                NOP
                DJNZ  R2,   WR1                 ;循環8次
                SETB  DQ
                RET

;************************讀DS18B20程序****************************
READ:   MOV   R4,   #2   
        MOV   R1,   #TEMPL   ;將25H,26H寫入
RE0:    MOV   R2,   #8
RE1:    CLR   C
        SETB  DQ
                NOP
                NOP
                CLR   DQ
                NOP
                NOP
                NOP
                SETB  DQ                          ;拉高數據線
                MOV   R3,   #7
                DJNZ  R3,   $                  
                MOV   C,    DQ
                MOV   R3,   #23       
                DJNZ  R3,   $              ;等待50us
                RRC   A
                DJNZ  R2,   RE1                  ;讀下個位
                MOV   @R1,  A
                INC   R1
                DJNZ  R4,   RE0
                RET                                                                          

;************************數據轉化程序******************************
TURN:   ANL   26H,  #07H          ;取后3位
        ANL   25H,  #0F0H          ;取前4位
                MOV   A,    25H
                ORL   26H,  A
                MOV   A,    26H
                SWAP  A                           ;高低互換
                MOV   TEMP_ZH,  A
                RET

;*************************溫度比較及報警**********************************
BJ:     MOV   A,    TEMP_TH         
        SUBB  A,    TEMP_ZH
                JC    TCL
                JNC   TCL1
                RET
TCL1:   CLR   BUZ
        RET
TCL:    SETB  BUZ
        RET
                                                                  
                  
                                                                                                               
;************************顯示程序***************************************
DISPLAY:MOV   A,         TEMP_ZH
        MOV   B,    #100
                DIV   AB                       ;商送A,余送B
                MOV   BAI,   A
                MOV   A,     B
                MOV   B,    #10
                DIV   AB
                MOV   SHI,   A
                MOV   GEW,    B
                MOV   DPTR, #TAB
                MOV   A,     BAI
                MOVC  A,     @A+DPTR
                MOV   P0,    A
                SETB  P2.0
                ACALL DELAY
                CLR   P2.0
                MOV   A,     SHI
                MOVC  A,     @A+DPTR
                MOV   P0,    A
                SETB  P2.1
                ACALL DELAY
                CLR   P2.1
                MOV   A,     GEW
                MOVC  A,     @A+DPTR
                MOV   P0,    A
                SETB  P2.2
                ACALL DELAY
                CLR   P2.2
                MOV   P0,    #39H          ;顯示c代碼
                SETB  P2.3
                ACALL DELAY
                CLR   P2.3
                ACALL BJ       
                JB    K1,    LOOP3
                JB    K2,    JIAN
                JB    K3,    JIA                   
                SJMP  DISPLAY
LOOP3:  LJMP  LOOP2

;**********************顯示段碼(共陽)*********************
TAB:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;*****************************小延時程序***********************************
DELAY:  MOV   R0,    #25
A1:     MOV   R1,    #20
A2:     DJNZ  R1,         A2
        DJNZ  R0,    A1
                RET
                 
                 

;****************************鍵盤程序***************************************
KEY:    CJNE  R7,#00H,HD
               RET
JIAN:   DEC   TEMP_ZH                  ;TEMP_ZH位地址減一
        INC   R7
                ACALL DISPLAY
JIA:    INC   TEMP_ZH         ;TEMP_ZH位地址加一
        DEC   R7
                ACALL DISPLAY
                RET
HD:     INC   TEMP_ZH
        DJNZ  R7,    HD
                RET
                END               
求大佬指點,謝謝了

RA@9`]YMWR@79O%Y6BSGN[I.png (50.96 KB, 下載次數: 40)

RA@9`]YMWR@79O%Y6BSGN[I.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:415123 發表于 2019-5-31 20:51 | 只看該作者
你的DISPLAY是作為子程序調用的,你卻在后面使用了不少跳轉指令,是錯誤的。一句話,子程序最后必須是返回,不能跳轉。好好理一下思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费观看的av毛片的网站 | 成人一区二区三区 | 久久久久久综合 | 精品久久久久一区二区国产 | 日韩成人影院在线观看 | 日韩伦理一区二区 | 一区二区三区中文字幕 | 国产高清在线 | 亚洲免费精品 | 黄色片免费在线观看 | 欧美精品一区二区三区视频 | 成人区精品一区二区婷婷 | 成人免费毛片在线观看 | 91极品欧美视频 | 欧美簧片 | 成人精品鲁一区一区二区 | 成人在线免费电影 | 99国产精品99久久久久久 | 国产精品一区二区不卡 | 一区二区中文字幕 | 亚洲狠狠丁香婷婷综合久久久 | 日韩久草| 国产精品激情 | 精品欧美一区二区在线观看欧美熟 | 欧美色综合一区二区三区 | 久久综合狠狠综合久久综合88 | 亚洲视频中文字幕 | 久久伊人精品 | 精品一级| 欧美日韩亚洲在线 | 欧美在线观看一区 | 久久成人精品视频 | 韩国精品一区二区三区 | 国产精品久久久久久久久 | 亚洲精品久久久久avwww潮水 | 久久久精品一区二区三区 | 99热国产精品 | 国产欧美精品一区二区 | 黄色免费网站在线看 | 日本中文字幕在线视频 | 国产成人99久久亚洲综合精品 |