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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

18B20這個程序怎么改才能在12c5a60s2單片機上使用?匯編語言

[復制鏈接]
跳轉到指定樓層
樓主
ID:261025 發(fā)表于 2020-6-3 12:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
現(xiàn)在的這個程序在at89s51上完全正常  在12c5a60s2上只顯示0.0   怎么修改才能讓它在12c5a60s2上使用

                                                                                   
                                                                        DQ      BIT      P3.0;   18b20                                                                                 
                                                                            TEMPL       DATA  26H                    
                                                                                TEMPH       DATA  27H        
                                                                                                                                                                                       
                                                                                TEMPHC      DATA  2AH
                                        TEMPLC      DATA  2BH
                                                                                TEMP_ZH     DATA  2CH

                                                                                FLAG    EQU      6EH                          ;溫度標志位
                  
                    MAIN:      
                                                                            LCALL   RE_TEMP   ; 讀溫度                                                                                             
                                                                                LCALL   CONVER    ; 處理溫度  
                                                                                LCALL   DISPBCD    ; BCD 碼溫度值                                                                                          
                                                                                LCALL   DISPLAY_INT ; 顯示溫度                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                        LJMP MAIN
;***************************************************************     
;溫度讀取                                   
;************************************************************  ***                                 
                                        RE_TEMP:                                                            
                                                                                SETB      DQ                                                              
                                                                                ACALL                  INIT_18B20                                                   
                                                                                JB                          FLAG, ST                                                         
                                                                                RET                                                                  
                                        ST:                                                                  
                                                                                MOV                         A, #0CCH                                                        
                                                                                ACALL                  WRITE_18B20                                                   
                                                                                MOV                          A, #44H                                                         
                                                                                ACALL                  WRITE_18B20                                                   
                                                                                ACALL                  INIT_18B20                                                   
                                                                                MOV                          A, #0CCH                                                        
                                                                                ACALL                  WRITE_18B20                                                   
                                                                                MOV                          A, #0BEH                                                        
                                                                                ACALL                 WRITE_18B20                                                   
                                                                                ACALL                 READ_18B20                                                   
                                                                                RET   
;***************************************************************     
;寫DS18B20                                   
;***************************************************************                                   
                                        WRITE_18B20:                                                         
                                                                                MOV                   R2, #8                                                         
                                                                                CLR                   C                                                               
                                        WR1:                                                                                 
                                                                                CLR                   DQ                                                              
                                                                                MOV                   R3, #6                                                         
                                                                                DJNZ                  R3, $                                                         
                                                                                RRC                   A                                                               
                                                                                MOV                   DQ, C                                                           
                                                                                MOV                   R3, #23                                                         
                                                                                DJNZ                  R3, $                                                         
                                                                                SETB                  DQ                                                            
                                                                                NOP                                                                                   
                                                                                DJNZ                  R2, WR1                                                        
                                                                                SETB                  DQ                                                            
                                                                                RET                                                                                                                                                         
;***************************************************************     
;初始化DS18B20                                
;***************************************************************                                
                                        INIT_18B20:                                                         
                                                                                SETB      DQ                                                            
                                                                                NOP                                                                                   
                                                                                CLR                   DQ                                                              
                                                                                MOV                   R1, #3                                                         
                                        DLY:                      MOV                   R0, #107                                                        
                                                                                DJNZ                  R0, $                                                         
                                                                                DJNZ                  R1, DLY                                                        
                                                                                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, #117                                                        
                                        T6:                 DJNZ      R0, T6                                                         
                                        T7:                 SETB      DQ                                                            
                                                                                RET                                                                  
                                                                                
;***************************************************************     
;讀DS18B20                                 
;***************************************************************                                                                                          
;從DS18B20中讀出溫度低位、高位和報警值TH、TL
;存入26H、27H、28H、29H
;============================================================
READ_18B20:  
         MOV R4,#4            ; 將溫度高位和低位從DS18B20中讀出
         MOV R1,#26H          ; 存入26H、27H、28H、29H
RE00:    MOV R2,#8
RE01:    CLR C
         SETB DQ
         NOP
         NOP
         CLR DQ         ;讀前總線保持為低
         NOP
         NOP
         NOP
         SETB DQ        ;開始讀總線釋放
         MOV R3,#09           ;延時18微妙
         DJNZ R3,$
         MOV C,DQ      ;從DS18B20總線讀得一個BIT
         MOV R3,#23
         DJNZ R3,$            ;等待46微妙
         RRC A                ;把讀得的位值環(huán)移給A
         DJNZ R2,RE01         ;讀下一個BIT
         MOV @R1,A
         INC R1
         DJNZ R4,RE00
         RET                                                                                          
;***************************************************************     
;溫度轉換                                    
;***************************************************************                                
CONVER:                                                              
;  處理溫度 BCD 碼子程序
;****************************************************
CONVTEMP:      MOV  A,TEMPH       ;判溫度是否零下
               ANL  A,#80H
               JZ  TEMPC1         ;溫度零上轉
               CLR  C
               MOV  A,TEMPL       ;二進制數(shù)求補(雙字節(jié))
               CPL  A             ;取反加1
               ADD  A,#01H
               MOV  TEMPL,A
               MOV  A,TEMPH       ;-
               CPL  A
               ADDC  A,#00H
               MOV  TEMPH,A          ;TEMPHC HI =符號位
               MOV  TEMPHC,#0BH
               SJMP  TEMPC11

TEMPC1:        MOV  TEMPHC,#0AH     ;
TEMPC11:       MOV  A,TEMPHC
               SWAP  A
               MOV  TEMPHC,A
               MOV  A,TEMPL
               ANL  A,#0FH             ;乘0.0625
               MOV  DPTR,#TEMPDOTTAB
               MOVC  A,@A+DPTR
               MOV  TEMPLC,A            ;TEMPLC  LOW=小數(shù)部分 BCD

               MOV  A,TEMPL             ;整數(shù)部分
               ANL  A,#0F0H
               SWAP  A
               MOV  TEMPL,A
               MOV  A,TEMPH
               ANL  A,#0FH
               SWAP  A
               ORL  A,TEMPL
               MOV  TEMP_ZH,A           ;組合后的值存入TEMP_ZH
               LCALL  HEX2BCD1
               MOV  TEMPL,A
               ANL  A,#0F0H
               SWAP  A
               ORL  A,TEMPHC            ;TEMPHC LOW = 十位數(shù) BCD
               MOV  TEMPHC,A
               MOV  A,TEMPL
               ANL  A,#0FH
               SWAP  A                  ;TEMPLC HI = 個位數(shù) BCD
               ORL  A,TEMPLC
               MOV  TEMPLC,A
               MOV  A,R7
               JZ  TEMPC12
               ANL  A,#0FH
               SWAP  A
               MOV  R7,A
               MOV  A,TEMPHC            ;TEMPHC HI = 百位數(shù) BCD
               ANL  A,#0FH
               ORL  A,R7
               MOV  TEMPHC,A
TEMPC12:       RET
;===========================================================
;顯示區(qū) BCD 碼溫度值刷新子程序
;===========================================================
DISPBCD:      MOV  A,TEMPLC
              ANL  A,#0FH
              MOV  70H,A                 ;小數(shù)位
              MOV  A,TEMPLC
              SWAP  A
              ANL  A,#0FH
              MOV  71H,A                 ;個位
              MOV  A,TEMPHC
              ANL  A,#0FH
              MOV  72H,A                 ;十位
              MOV  A,TEMPHC
              SWAP  A
              ANL  A,#0FH
              MOV  73H,A                 ;百位
              MOV  A,TEMPHC
              ANL  A,#0F0H
              CJNE  A,#010H,DISPBCD0
              SJMP  DISPBCD2
;========================================
DISPBCD0:     MOV  A,TEMPHC
              ANL  A,#0FH
              JNZ  DISPBCD2               ;十位數(shù)是0
              MOV  A,TEMPHC
              SWAP  A
              ANL  A,#0FH
              MOV  73H,#0AH            ;符號位不顯示
              MOV  72H,A               ;十位數(shù)顯示符號
DISPBCD2:     RET
;***************************************************************     
;顯示溫度整數(shù)部分                                    
;***************************************************************                                                                     
DISPLAY_INT:   
;百位                                                                                 
                                                          MOV A,73H;
                                                          MOV                          DPTR, #TAB                                                      
                                                          MOVC      A,@A+DPTR
                                                          MOV P0,A;
                                                          CLR P1.4
                                                          CALL  XSYS
                                                          SETB P1.4;
;十位
DIST:                                                     MOV A,72H;   
                                              MOV                          DPTR, #TAB                                                      
                                                          MOVC      A,@A+DPTR
                                                          MOV P0,A;
                                                          CLR P1.5
                                                          CALL  XSYS
                                                          SETB P1.5;
;個位
DISY:                                               MOV A,71H;                                          
                                                          MOV                          DPTR, #TAB                                                      
                                                          MOVC      A,@A+DPTR
                                                          MOV P0,A;
                                                          CLR P1.6
                                                          CLR P0.7
                                                          CALL  XSYS
                                                          SETB P0.7;
                                                          SETB P1.6;
;小數(shù)
                                                          MOV A,70H;
                                                          MOV                          DPTR, #TAB                                                      
                                                          MOVC      A,@A+DPTR
                                                          MOV P0,A;
                                                          CLR P1.7
                                                          CALL  XSYS
                                                          SETB P1.7;
                                                                                                                                                                                                                                                         
                        RET                                                                  

;===================================================================
;顯示延時
XSYS:
DELAY200US:                        ;@11.0592MHz
        NOP
        NOP
        NOP
        PUSH 30H
        PUSH 31H
        MOV 30H,#2
        MOV 31H,#179
NES:
        DJNZ 31H,NES
        DJNZ 30H,NES
        POP 31H
        POP 30H
        RET

;***************************************************************
;單字節(jié)十六進制轉 BCD
;******************************************************
HEX2BCD1:   MOV  B,#064H         
            DIV  AB               
            MOV  R7,A            
            MOV  A,#0AH
            XCH  A,B
            DIV  AB               
            SWAP  A
            ORL  A,B
            RET
;***************************************************************
; 數(shù)據(jù)查表
;***************************************************************                                       
          TAB:           DB  0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h,0FFH,0BFH; ;共陽
                         ;                0         1          2           3        4   5        6        7         8         9         空           -
        
;  小數(shù)部分碼表
;-----------------------------------------------------------
TEMPDOTTAB:  DB   00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
             DB   06H,07H,08H,08H,09H,09H

;====================================================

             END


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:142666 發(fā)表于 2020-6-3 21:19 | 只看該作者
暈了,匯編,C語言的要嗎?
回復

使用道具 舉報

板凳
ID:261025 發(fā)表于 2020-6-4 10:00 | 只看該作者
yxj141 發(fā)表于 2020-6-3 21:19
暈了,匯編,C語言的要嗎?

C語言玩不轉  稍微改點就出錯
這個程序問題已解決了  網上有個帖子也是類似的問題  他邊講解變修改最后能正常工作了  我參考他的程序用他說的軟件生成了匯編延時解決的  看他的C語言真簡單  輪到匯編程序真長
回復

使用道具 舉報

地板
ID:401564 發(fā)表于 2020-6-4 10:53 | 只看該作者
其它代碼不用動,只改動延時部分就可以了
你要對著STC12C5A60S2的匯編指令慢慢的修改延時就可以了,12C系列的指令時鐘和AT89S51是不一樣的
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级片av | 精品国产一区二区三区久久狼黑人 | 亚洲午夜视频 | 九九久久久| 鸡毛片| 国产成人小视频 | 狠狠干网站 | 黄免费看 | 91久久久久久久久久久久久 | 在线观看成人免费视频 | 黄色网络在线观看 | 男女羞羞视频免费看 | 91av在线不卡 | 国产在线精品一区二区三区 | 久久久久久久国产精品 | 81精品国产乱码久久久久久 | 精品视频在线观看 | 中文字幕在线二区 | 麻豆av网站 | 亚洲一区在线播放 | 成人字幕网zmw | 黄色av网站免费看 | 亚洲精品一区二区三区四区高清 | 一区二区三区欧美在线 | 日本一区二区三区精品视频 | 国产视频中文字幕 | 欧美黑人体内she精在线观看 | 自拍第一页 | 亚洲av毛片| 91精品中文字幕一区二区三区 | 一本岛道一二三不卡区 | 欧美一区二区在线观看 | 精品国产色 | 九色一区 | 国产一二三视频在线观看 | 91精品国产综合久久久久久 | 亚洲看片网站 | 成在线人视频免费视频 | 91日b| 黄色av网站在线观看 | 国产大片一区 |