谁能帮我把这个汇编程序改成c语言的啊

2019-07-15 19:44发布

;****************************资源分配times New Roman">**************************     FLAG1  EQU 54H;是否检测到DS18B20标志位     FLAG2  EQU 00H     COUNT  EQU 63H     CSA    EQU P0.4     CSB    EQU P0.3     RS     EQU P0.2     RW     EQU P0.1     E      EQU P0.0     COM    EQU 21H       ;命令字     DAT    EQU 22H       ;显示数据      column EQU 23H     ;     pagef  EQU 24h      ;     cpage  EQU 25H     ccolumn EQU 26H    ;(0-15)      CODE             EQU 27h     column2          EQU 52H     pagef2           equ 60h     cpage2           EQU 61H     ccolumn2         EQU 62H      column3          EQU 2eH     pagef3           equ 2fh     cpage3           EQU 30H     ccolumn3         EQU 31H     column4          EQU 32H     pagef4           equ 33h     cpage4           EQU 34H     ccolumn4         EQU 35H     column5          EQU 36H     pagef5           equ 37h     cpage5           EQU 38H     ccolumn5         EQU 39H ;*****************************主程序开始******************ORG 0000HLJMP START ORG 0003HLJMP INT0                         ;外部中断 ORG 0030HSTART: MOV SP,#70H       MOV P2,#0F0H       CLR A                                   CLR F0                     ;清设置键       CLR FLAG2                  ;清确认键       MOV COUNT,#0               ;中断次数计数       SETB IT0       SETB EX0       SETB EA              LCALL INT                  ;LCD12864初始化子程序       LCALL CLEAR                ;LDC12864清屏子程序        LCALL DISPLAY1             ;显示"温度自动控制系统"       LCALL DISPLAY2             ;显示"设置温度"       LCALL DISPLAY3             ;显示预设的温度       LCALL DISPLAY4             ;显示"实际温度"       LCALL DISPLAY5        LCALL GET_TEMPER           ;调用读温度子程序       ACALL DISPLAY5             ;调用显示M:           LCALL GET_TEMPER       LCALL DELAY1       MM:     LCALL DISPLAY3MM1:    JB F0,MM4                ;是否按上"设置"        JNB F1,M                 ;是否按下"确认"         MOV A,48H        CJNE A,43H,MM5         MOV A,55H        CJNE A,42H,MM5         MOV A,56H        CJNE A,41H,MM5        LJMP MM8       MM4:    MOV A,COUNT        CJNE A,#1,MM2        LCALL DISPLAY8        LCALL DISPLAY8        LJMP MM MM2:    CJNE A,#2,MM3         LCALL DISPLAY9        LCALL DISPLAY9MM3:    CJNE A,#3,MM        LCALL DISPLAY10        LCALL DISPLAY10        LJMP MM MM5:    JC  MM7        LJMP MM6 MM6:    LCALL DISPLAY6        CLR  P0.5        SETB P0.6        SETB P0.7        LJMP M MM7:   LCALL DISPLAY7       SETB P0.5       CLR  P0.6       SETB P0.7       LJMP M MM8:   LCALL DISPLAY11       SETB P0.5       SETB P0.6       CLR  P0.7       LJMP M       ;***********************外部中断0子程序**************INT0:      CLR EX0      INC COUNT                 ;中断计数器加1      CPL P3.0      MOV DPTR,#JS       MOV A,P2      MOV P2,#0FH      MOV 47H,P2      JNB ACC.4,E1      JNB ACC.5,E2      JNB ACC.6,E3      JNB ACC.7,E4      SETB EX0      RETI E1:   MOV 20H,#0      LJMP KEYHE2:   MOV 20H,#4      LJMP KEYHE3:   MOV 20H,#8      LJMP KEYHE4:   MOV 20H,#12      LJMP KEYH KEYH:MOV A,47H     JNB ACC.0,D0     JNB ACC.1,D1     JNB ACC.2,D2     JNB ACC.3,D3     SETB EX0     RETI D0:  MOV A,#0     ADD A,20H     MOV 59H,A     MOV B,#3     MUL AB     JMP @A+DPTR D1:  MOV A,#1     ADD A,20H     MOV 59H,A     MOV B,#3     MUL AB     JMP @A+DPTR D2:  MOV A,#2     ADD A,20H     MOV 59H,A     MOV B,#3     MUL AB     JMP @A+DPTR D3:  MOV A,#3     ADD A,20H     MOV 59H,A     MOV B,#3     MUL AB     JMP @A+DPTR JS:  LJMP LOOP0     LJMP LOOP1     LJMP LOOP2     LJMP LOOP3     LJMP LOOP4     LJMP LOOP5     LJMP LOOP6     LJMP LOOP7     LJMP LOOP8     LJMP LOOP9     LJMP LOOP10     LJMP LOOP11 LOOP0:      ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP1:      ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP2:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP3:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP4:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP5:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP6:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP7:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP8:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP9:     ACALL SHIFT1     MOV P2,#0F0H     SETB EX0     RETI LOOP10:     SETB F0              ;按下设置键     MOV COUNT,#1     MOV P2,#0F0H     SETB EX0     RETI LOOP11:                  ;按下"确认"     CLR F0     SETB F1     MOV COUNT,#0     MOV P2,#0F0H     SETB EX0     RETI SHIFT1:      JB F0,LLL      LJMP EXIT LLL:  MOV A,COUNT      CJNE A,#2,LLL1      MOV 48H,59H      LJMP EXIT LLL1: CJNE A,#3,LLL2      MOV 55H,59H      LJMP EXIT LLL2: CJNE A,#4,EXIT      MOV 56H,59H      SETB F1      CLR  F0 EXIT: RET ;*************************显示子程序*************************DISPLAY1:                        ;显示"自动温度控制系统" 循环效果        mov column4,#48       mov pagef4,#0             ;       mov code,#0       lcall writeright2           LCALL DELAY1        mov column4,#32       mov pagef4,#0             ;       mov code,#0       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#1       lcall writeright2       LCALL DELAY1        mov column4,#16       mov pagef4,#0             ;       mov code,#0       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#1       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#2       lcall writeright2        LCALL DELAY1        mov column4,#0       mov pagef4,#0             ;       mov code,#0       lcall writeright2        mov column4,#16       mov pagef4,#0             ;       mov code,#1       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#2       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#3       lcall writeright2        LCALL DELAY1        mov column3,#48       mov pagef3,#0             ;       mov code,#0       lcall writeleft2        mov column4,#0       mov pagef4,#0             ;       mov code,#1       lcall writeright2        mov column4,#16       mov pagef4,#0             ;       mov code,#2       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#3       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#4       lcall writeright2       LCALL DELAY1        mov column3,#32       mov pagef3,#0             ;       mov code,#0       lcall writeleft2        mov column3,#48       mov pagef3,#0             ;       mov code,#1       lcall writeleft2        mov column4,#0       mov pagef4,#0             ;       mov code,#2       lcall writeright2        mov column4,#16       mov pagef4,#0             ;       mov code,#3       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#4       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#5       lcall writeright2        LCALL DELAY1        mov column3,#16       mov pagef3,#0             ;       mov code,#0       lcall writeleft2        mov column3,#32       mov pagef3,#0             ;       mov code,#1       lcall writeleft2        mov column3,#48       mov pagef3,#0             ;       mov code,#2       lcall writeleft2        mov column4,#0       mov pagef4,#0             ;       mov code,#3       lcall writeright2        mov column4,#16       mov pagef4,#0             ;       mov code,#4       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#5       lcall writeright2         mov column4,#48       mov pagef4,#0             ;       mov code,#6       lcall writeright2       LCALL DELAY1        mov column3,#0       mov pagef3,#0             ;       mov code,#0       lcall writeleft2        mov column3,#16       mov pagef3,#0             ;       mov code,#1       lcall writeleft2        mov column3,#32       mov pagef3,#0             ;       mov code,#2       lcall writeleft2        mov column3,#48       mov pagef3,#0             ;       mov code,#3       lcall writeleft2        mov column4,#0       mov pagef4,#0             ;       mov code,#4       lcall writeright2        mov column4,#16       mov pagef4,#0             ;       mov code,#5       lcall writeright2        mov column4,#32       mov pagef4,#0             ;       mov code,#6       lcall writeright2        mov column4,#48       mov pagef4,#0             ;       mov code,#7       lcall writeright2       LCALL DELAY1       RET DISPLAY2:                         ;显示"设置温度"       mov column3,#16            ;       mov pagef3,#2       mov code,#8       lcall writeleft2       LCALL DELAY1        mov column3,#32          ;       mov pagef3,#2       mov code,#9       LCALL writeleft2       LCALL DELAY1         mov column3,#48          ;       mov pagef3,#2       mov code,#0       lcall writeleft2       LCALL DELAY1        mov column4,#0            ;       mov pagef4,#2       mov code,#1       lcall writeright2       LCALL DELAY1       RETDISPLAY3:       mov column2,#16       mov pagef2,#2       mov code,#10       lcall writeright                                  ;显示预设的温度       mov column2,#24       mov pagef2,#2       mov code,48H       lcall writeright        mov column2,#32       mov pagef2,#2       mov code,55H       lcall writeright        mov column2,#40       mov pagef2,#2             ;.       mov code,#11       lcall writeright        mov column2,#48       mov pagef2,#2       mov code,56H       lcall writeright       RET       DISPLAY4:                              ;显示"实际温度"       mov column3,#16            ;       mov pagef3,#4       mov code,#10       lcall writeleft2       LCALL DELAY1        mov column3,#32           ;       mov pagef3,#4       mov code,#11       lcall writeleft2       LCALL DELAY1        mov column3,#48          ;       mov pagef3,#4       mov code,#0       lcall writeleft2       LCALL DELAY1        mov column3,#0          ;       mov pagef3,#4       mov code,#1       lcall writeright2       LCALL DELAY1        RET DISPLAY5:                            ;显示实际的温度      MOV A,29H      MOV C,40H  ;28的位地址      RRC A      MOV C,41H      RRC A      MOV C,42H      RRC A      MOV C,43H      RRC A      MOV 51H,A      ANL 29H,#0FH      MOV A,29H      MOV B,#6      MUL AB      MOV 50H,A       mov a,51H      mov b,#10      div ab      mov 43H,a      mov 42H,b       MOV A,50H      MOV B,#10      DIV AB      MOV 41H,A       MOV 40H,B        mov column2,#16       mov pagef2,#4       mov code,#10       lcall writeright        mov column2,#24            ;实际温度       mov pagef2,#4       mov code,43h       lcall writeright        mov column2,#32       mov pagef2,#4       mov code,42h       lcall writeright        mov column2,#40       mov pagef2,#4             ;.       mov code,#11       lcall writeright        mov column2,#48       mov pagef2,#4       mov code,41h       lcall writeright       RET       DISPLAY6:       mov column3,#24       mov pagef3,#6             ;       mov code,#13       lcall writeleft2       LCALL DELAY1        mov column3,#40       mov pagef3,#6             ;       mov code,#14       lcall writeleft2       LCALL DELAY1        mov column,#56       mov pagef,#6             ; :       mov code,#10       lcall writeleft       LCALL DELAY1        mov column4,#0       mov pagef4,#6             ;       mov code,#15       lcall writeright2       LCALL DELAY1        mov column4,#16       mov pagef4,#6             ;       mov code,#16       lcall writeright2       LCALL DELAY1        mov column4,#32       mov pagef4,#6             ; !       mov code,#19       lcall writeright2       LCALL DELAY1       RET DISPLAY7:       mov column3,#24       mov pagef3,#6             ;       mov code,#13       lcall writeleft2       LCALL DELAY1        mov column3,#40       mov pagef3,#6             ;       mov code,#14       lcall writeleft2       LCALL DELAY1        mov column,#56       mov pagef,#6             ; :       mov code,#10       lcall writeleft       LCALL DELAY1        mov column4,#0       mov pagef4,#6             ;       mov code,#17       lcall writeright2       LCALL DELAY1        mov column4,#16       mov pagef4,#6             ;       mov code,#0       lcall writeright2       LCALL DELAY1        mov column4,#32       mov pagef4,#6             ;!       mov code,#19       lcall writeright2       LCALL DELAY1       RETDISPLAY8:         mov column2,#24         mov pagef2,#2         mov code,48H         lcall writeright          LCALL DELAY         LCALL DELAY          mov column2,#24         mov pagef2,#2         mov code,#12         lcall writeright         RET         DISPLAY9:         mov column2,#32         mov pagef2,#2         mov code,55H         lcall writeright          LCALL DELAY         LCALL DELAY          mov column2,#32         mov pagef2,#2         mov code,#12         lcall writeright         RETDISPLAY10:        mov column2,#48         mov pagef2,#2         mov code,56H         lcall writeright          LCALL DELAY         LCALL DELAY          mov column2,#48         mov pagef2,#2         mov code,#12         lcall writeright         RET       DISPLAY11:       mov column3,#24       mov pagef3,#6             ;       mov code,#13       lcall writeleft2       LCALL DELAY1        mov column3,#40       mov pagef3,#6             ;       mov code,#14       lcall writeleft2       LCALL DELAY1        mov column,#56       mov pagef,#6             ; :       mov code,#10       lcall writeleft       LCALL DELAY1        mov column4,#0       mov pagef4,#6             ;       mov code,#20       lcall writeright2       LCALL DELAY1        mov column4,#16       mov pagef4,#6             ;       mov code,#21       lcall writeright2       LCALL DELAY1        mov column4,#32       mov pagef4,#6             ;!       mov code,#19       lcall writeright2       LCALL DELAY1       RET DISPLAY:       mov column2,#24       mov pagef2,#2       mov code,48H       lcall writeright        mov column2,#32       mov pagef2,#2       mov code,55H       lcall writeright        mov column2,#40       mov pagef2,#2             ;.       mov code,#11       lcall writeright        mov column2,#48       mov pagef2,#2       mov code,56H       lcall writeright       MOV A,29H      MOV C,40H  ;28的位地址      RRC A      MOV C,41H      RRC A      MOV C,42H      RRC A      MOV C,43H      RRC A      MOV 51H,A      ANL 29H,#0FH      MOV A,29H      MOV B,#6      MUL AB      MOV 50H,A       mov a,51H      mov b,#10      div ab      mov 43H,a      mov 42H,b       MOV A,50H      MOV B,#10      DIV AB      MOV 41H,A      MOV 40H,B        mov column2,#24            ;实际温度       mov pagef2,#4       mov code,43h       lcall writeright        mov column2,#32       mov pagef2,#4       mov code,42h       lcall writeright        mov column2,#40       mov pagef2,#4             ;.       mov code,#11       lcall writeright        mov column2,#48       mov pagef2,#4       mov code,41h       lcall writeright       RET ;***********************DS18B20复位初始化子程序*********** INIT_1820:             SETB P3.1      NOP      CLR P3.1;主机发出延时537微秒的复位低脉冲      MOV R1,#3TSR1: MOV R0,#107      DJNZ R0,$      DJNZ R1,TSR1      SETB P3.1       ;然后拉高数据线      NOP      NOP      NOP      MOV R0,#25HTSR2: JNB P3.1,TSR3  ;等待DS18B20回应      DJNZ R0,TSR2      LJMP TSR4      ; 延时TSR3: SETB FLAG1     ; 置标志位,表示DS1820存在       LJMP TSR5TSR4: CLR FLAG1      ; 清标志位,表示DS1820不存在       LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7: SETB P3.1      RET    ; 读出转换后的温度值                  ;***********************读温度子程序*****************      GET_TEMPER:      SETB P3.1      LCALL INIT_1820;先复位DS18B20      JB FLAG1,TSS2       RET ; 判断DS1820是否存在?DS18B20不存在则返回TSS2:      MOV A,#0CCH ; 跳过ROM匹配      LCALL WRITE_1820      MOV A,#44H ; 发出温度转换命令      LCALL WRITE_1820;通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒      LCALL DISPLAY      LCALL INIT_1820;准备读温度前先复位      MOV A,#0CCH ; 跳过ROM匹配      LCALL WRITE_1820      MOV A,#0BEH ; 发出读温度命令      LCALL WRITE_1820      LCALL READ_18200      RET ;*************************写命令子程序**********WRITE_1820:      MOV R2,#8      CLR CWR1:  CLR P3.1      MOV R3,#6      DJNZ R3,$      RRC A      MOV P3.1,C       MOV R3,#23      DJNZ R3,$      SETB P3.1      NOP      DJNZ R2,WR1      SETB P3.1      RET ;***********************读命令子程序***********READ_18200:      MOV R4,#2      MOV R1,#29HRE00: MOV R2,#8RE01: CLR C      SETB P3.1      NOP      NOP      CLR P3.1      NOP      NOP      NOP      SETB P3.1      MOV R3,#9RE10: DJNZ R3,RE10      MOV C,P3.1      MOV R3,#23RE20: DJNZ R3,RE20      RRC A      DJNZ R2,RE01      MOV @R1,A      DEC R1      DJNZ R4,RE00      RET ;**********************左半屏写入数字子程序**************8writeleft:             mov dptr,#table1push columnmov cpage,#2mov ccolumn,#0mov a,pagefanl a,#07horl a,#0b8h            ;页地址,0mov com,alcall prm0 mov a,columnanl a,#3fhorl a,#40h             ;列地址,0mov com,alcall prm0 mov a,codemov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,a lp1:mov a,#00hmovc a,@a+dptrmov dat,alcall prm1inc ccolumnmov a,ccolumninc dptrcjne a,#8,lp1dec cpageinc pagefmov a,cpagejz over1mov a,pagefanl a,#07horl a,#0b8hmov com,alcall prm0pop columnmov a,columnanl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn,#0ljmp lp1over1:ret ;************右半屏写入数字子程序*******************writeright: mov dptr,#table1push column2mov cpage2,#2mov ccolumn2,#0mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0 mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0 mov a,codemov b,#16mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,a lp2:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn2mov a,ccolumn2inc dptrcjne a,#8,lp2dec cpage2inc pagef2mov a,cpage2jz over2mov a,pagef2anl a,#07horl a,#0b8hmov com,alcall prr0pop column2mov a,column2anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn2,#0ljmp lp2over2:ret ;*****************左半屏写入汉字子程序*****************writeleft2:  mov dptr,#table2push column3mov cpage3,#2mov ccolumn3,#0mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0 mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0 mov a,codemov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,a lp3:mov a,#00hmovc a,@a+dptrmov dat,alcall prm1inc ccolumn3mov a,ccolumn3inc dptrcjne a,#16,lp3dec cpage3inc pagef3mov a,cpage3jz over3mov a,pagef3anl a,#07horl a,#0b8hmov com,alcall prm0pop column3mov a,column3anl a,#3fhorl a,#40hmov com,alcall prm0mov ccolumn3,#0ljmp lp3over3:ret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;writeright2:  ; 右半屏写入汉字子程序mov dptr,#table2push column4mov cpage4,#2mov ccolumn4,#0mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0 mov a,column4anl a,#3fhorl a,#40hmov com,alcall prr0 mov a,codemov b,#32mul abadd a,dplmov dpl,amov a,baddc a,dphmov dph,a lp4:mov a,#00hmovc a,@a+dptrmov dat,alcall prr1inc ccolumn4mov a,ccolumn4inc dptrcjne a,#16,lp4dec cpage4inc pagef4mov a,cpage4jz over4mov a,pagef4anl a,#07horl a,#0b8hmov com,alcall prr0pop column4mov a,column4anl a,#3fhorl a,#40hmov com,alcall prr0mov ccolumn4,#0ljmp lp4over4:ret
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。