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

標(biāo)題: 求大佬看下單片機(jī)匯編程序吧,實(shí)在不知道哪里不對(duì) [打印本頁(yè)]

作者: emi    時(shí)間: 2019-5-31 17:34
標(biāo)題: 求大佬看下單片機(jī)匯編程序吧,實(shí)在不知道哪里不對(duì)
我的仿真圖也改了下,用的共陽(yáng)極數(shù)碼管,自己也用了別的顯示程序測(cè)了,沒(méi)得問(wèn)題。但是我程序一仿真數(shù)碼管就沒(méi)得動(dòng)靜
程序:TEMP_ZH EQU 30H       ;溫度存放單元
TEMPL   EQU        25H                  ;低字節(jié)存放
TEMPH   EQU 26H       ;高字節(jié)存放
TEMP_TH EQU 27H                  ;高溫報(bào)警溫度
GEW     EQU 24H       ;定義個(gè)位
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          ;溫度傳感器標(biāo)志位
DQ      EQU P3.3

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

;*******************DS18B20復(fù)位初始化程序************************
RESET:  SETB  DQ
        NOP
                NOP
                CLR   DQ
                MOV   R1,   #3
DLY:    MOV   R0,   #107
        DJNZ  R0,   $
                DJNZ  R1,   DLY                ;延時(shí)648μs程序
                SETB  DQ                         ;拉高數(shù)據(jù)線
                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
;*************************溫度讀寫(xiě)指令**************************
ZXD:    MOV   SP,   #60H
        ACALL RESET               
                JNB   FLAG, ZXD          
                MOV   A,    #0CCH          ;跳過(guò)rom指令
                ACALL WRITE
                MOV   A,    #44H          ;溫度轉(zhuǎn)換指令
                ACALL WRITE
                MOV   R2,   #6
DLY1:        MOV   R1,   #255
DLY2:        MOV   R0,   #255
        DJNZ  R0,   $
                DJNZ  R1,   DLY2
                DJNZ  R2,   DLY1          ;延時(shí)780ms
                ACALL RESET
                MOV   A,    #0CCH
                ACALL WRITE
                MOV   A,    #0BEH          ;讀取寄存器指令
                ACALL WRITE
                ACALL READ                          ;讀取溫度
                RET



;*************************寫(xiě)入DS18B20程序***********************
WRITE:  MOV   R2,   #8                 ;一共8位數(shù)據(jù)
        CLR   C
WR1:        CLR   DQ
                MOV   R3,   #6
                DJNZ  R3,   $
                RRC   A                                 ;右移A將數(shù)據(jù)給C
                MOV   DQ,    C                 ;寫(xiě)入一個(gè)位
                MOV   R0,   #23
                DJNZ  R0,   $
                SETB  DQ
                NOP
                DJNZ  R2,   WR1                 ;循環(huán)8次
                SETB  DQ
                RET

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

;************************數(shù)據(jù)轉(zhuǎn)化程序******************************
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

;*************************溫度比較及報(bào)警**********************************
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

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

;****************************鍵盤(pán)程序***************************************
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               
求大佬指點(diǎn),謝謝了

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

RA@9`]YMWR@79O%Y6BSGN[I.png

作者: honey_teck    時(shí)間: 2019-5-31 20:51
你的DISPLAY是作為子程序調(diào)用的,你卻在后面使用了不少跳轉(zhuǎn)指令,是錯(cuò)誤的。一句話(huà),子程序最后必須是返回,不能跳轉(zhuǎn)。好好理一下思路




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲精品一区二区三区蜜桃久 | 国产精品福利视频 | 成在线人视频免费视频 | 99久久久无码国产精品 | 精品一区欧美 | 天天干视频网 | 一区二区三区四区视频 | 免费在线看黄视频 | 日韩成人一区 | 中文字幕在线一区二区三区 | 国产成人99久久亚洲综合精品 | 国产91网站在线观看 | 国产一级片免费视频 | 国产a视频 | 欧美专区日韩 | 欧美二区三区 | 日本一区二区在线视频 | 久久久久国产精品 | 中文字幕 亚洲一区 | 亚洲第一天堂无码专区 | 97超在线视频 | 国产伦一区二区三区久久 | 欧美精品一区三区 | 毛片免费视频 | 国产视频日韩 | 高清久久 | 亚洲精品久久久久久久久久久 | 超碰97干| 一区二区国产精品 | 丁香五月缴情综合网 | 精品中文字幕一区二区 | 欧美成人自拍 | 精品亚洲一区二区三区四区五区 | av网站在线看 | 久久久久久91 | 九九久久久| 成人av网站在线观看 | 久久久久国产一区二区三区四区 | 国产精品福利一区二区三区 | 国产高清在线观看 | 成人超碰|