Advertisement
Guest User

DAMN_SHIT_8051

a guest
Jan 7th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. dseg at      30h
  2.  
  3. done:       ds          1
  4. count:      ds          1
  5. temp:       ds          1
  6. flag:       ds          1
  7. up_flag:    ds          1
  8. down_flag:  ds          1
  9.  
  10. temp_value: ds          1
  11. TempBuffer: ds          5
  12. x:          ds          1
  13.  
  14.  
  15. cseg at 8000h
  16.       jmp start
  17.  
  18. LcdRs        bit     P2.5
  19. LcdRw        bit     P2.6
  20. LcdEn        bit     P2.7
  21. DBPort            equ     P0
  22.  
  23. flag1             bit     P3.0
  24. flag2             bit     P3.1
  25. flag3             bit     P3.2
  26. flag4             bit     P3.3
  27.  
  28.  
  29. LCD_COMMAND       equ     0  
  30. LCD_DATA          equ     1  
  31. LCD_HOMING        equ     0x02
  32.  
  33.  
  34.            
  35. DQ                bit    P1.0
  36.  
  37. using 0
  38.  
  39. ; FUNCTION LCD_Write (BEGIN)                        
  40. LCD_Write:                                    
  41.        CLR     LcdEn
  42.                            
  43.        MOV     C, PSW.1
  44.        MOV     LcdRs,C
  45.                            
  46.        CLR     LcdRw
  47.        NOP    
  48.                            
  49.        MOV     DBPort, R0
  50.        NOP    
  51.                            
  52.        SETB    LcdEn
  53.        NOP    
  54.                            
  55.        CLR     LcdEn
  56.        NOP    
  57.                            
  58.        CLR     LcdRs
  59.                            
  60.        SETB    LcdRw
  61.        NOP    
  62.                            
  63.        SETB    LcdEn
  64.        NOP    
  65.                            
  66.        CLR     LcdEn
  67.                      
  68.  RET    
  69. ; FUNCTION LCD_Write (END)
  70.  
  71. ; FUNCTION LCD_Initial (BEGIN)
  72. LCD_Initial:                                                        
  73.                          
  74.       CLR     LcdEn
  75.                          
  76.       CLR     PSW.1
  77.       MOV     R0,#038H
  78.       LCALL   LCD_Write
  79.                          
  80.       CLR     PSW.1
  81.       MOV     R0,#038H
  82.       LCALL   LCD_Write
  83.                          
  84.       CLR     PSW.1
  85.       MOV     R0,#0CH
  86.       LCALL   LCD_Write
  87.                          
  88.       CLR     PSW.1
  89.       MOV     R0,#01H
  90.       LCALL   LCD_Write
  91.                          
  92.       CLR     PSW.1
  93.       MOV     R0,#06H
  94.       LJMP    LCD_Write
  95. RET
  96. ; FUNCTION LCD_Initial (END)
  97.  
  98.  
  99. ; FUNCTION Print (BEGIN)
  100.                                            
  101. ;---- Variable 'str' assigned to Register 'R1/R2/R3' ----
  102. Print:                                          
  103. LABEL0003:
  104.                          
  105.       ;LCALL   LABELLABELLDPTR
  106.       ;MOV     R7,A
  107.       MOV     A, @R1
  108.       JZ      LABEL0005
  109.                          
  110.       SETB    PSW.1
  111.       MOV     R0, A
  112.       LCALL   LCD_Write
  113.                          
  114.       inc     R1
  115.                          
  116.       SJMP    LABEL0003
  117.                                            
  118. LABEL0005:
  119.       RET    
  120. ; FUNCTION Print (END)
  121.  
  122. ; FUNCTION L?0034 (BEGIN)
  123. label34:
  124.       LCALL   WriteOneChar
  125.       SETB    flag1
  126.       MOV     R7,#064H
  127.       MOV     R6,#00H
  128.  
  129.       ret
  130. ; FUNCTION L?0034 (END)
  131.  
  132. ; FUNCTION delay (BEGIN)
  133. ;---- Variable 'i' assigned to Register 'R6/R7' ----
  134.  
  135. delay:                                          
  136. LABEL0006:
  137.                          
  138.       MOV     A,R7
  139.       DEC     R7
  140.       MOV     R4,AR6
  141.       JNZ     LABEL0031
  142.       DEC     R6
  143.  
  144. LABEL0031:
  145.       ORL     A,R4
  146.       JNZ     LABEL0006
  147.                          
  148.       RET    
  149.  
  150. ; FUNCTION delay (END)
  151.  
  152.  
  153.  
  154. ; FUNCTION Init_DS18B20 (BEGIN)
  155. Init_DS18B20:                                                                    
  156.                          
  157.       SETB    DQ
  158.                          
  159.       MOV     R7,#08H
  160.       MOV     R6,#00H
  161.       LCALL   delay
  162.  
  163.                          
  164.       CLR     DQ
  165.                          
  166.       MOV     R7,#050H
  167.       MOV     R6,#00H
  168.       LCALL   delay
  169.                          
  170.       SETB    DQ
  171.                          
  172.       MOV     R7,#0EH
  173.       MOV     R6,#00H
  174.       LCALL   delay
  175.                          
  176.       MOV     C,DQ
  177.       CLR     A
  178.       RLC     A
  179.       MOV     x,A
  180.                          
  181.       MOV     R7,#014H
  182.       MOV     R6,#00H
  183.       call    delay
  184.  
  185.       ret
  186. ; FUNCTION Init_DS18B20 (END)
  187.  
  188.  
  189.  
  190.  
  191. ; FUNCTION ReadOneChar (BEGIN)
  192. ReadOneChar:                                                  
  193.                                            
  194. ;---- Variable 'i' assigned to Register 'R5' ----
  195.       CLR     A
  196.                                            
  197. ;---- Variable 'dat' assigned to Register 'R3' ----
  198.       MOV     R3,A
  199.                                            
  200.       MOV     R5,#08H
  201. LABEL0010:
  202.                                            
  203.                          
  204.       CLR     DQ
  205.                          
  206.       MOV     A,R3
  207.       CLR     C
  208.       RRC     A
  209.       MOV     R3,A
  210.                          
  211.       SETB    DQ
  212.                          
  213.       JNB     DQ,LABEL0013
  214.                          
  215.       ORL     AR3,#080H
  216. LABEL0013:
  217.                          
  218.       MOV     R7,#0F4H
  219.       MOV     R6,#01H
  220.       LCALL   delay
  221.                          
  222.       DJNZ    R5,LABEL0010
  223.       LABEL0011:
  224.                          
  225.       MOV     R7,AR3
  226.                          
  227.       RET    
  228. ; FUNCTION ReadOneChar (END)
  229.  
  230.  
  231. ; FUNCTION L?0035 (BEGIN)
  232. L_CC:
  233.       LCALL   Init_DS18B20
  234.       SETB    flag1
  235.       MOV     R7,#0CCH
  236.       ret
  237.  
  238. ; FUNCTION WriteOneChar (BEGIN)
  239.  
  240. WriteOneChar:
  241.  
  242. ;---- Variable 'dat' assigned to Register 'R5' ----
  243.       MOV     R5,AR7
  244.                                            
  245.                                            
  246. ;---- Variable 'i' assigned to Register 'R3' ----
  247.                                            
  248.       MOV     R3,#08H
  249. LABEL0015:
  250.                          
  251.                          
  252.       CLR     DQ
  253.                          
  254.       MOV     A,R5
  255.       RRC     A
  256.       MOV     DQ,C
  257.                          
  258.       MOV     R7,#0F4H
  259.       MOV     R6,#01H
  260.       LCALL   delay
  261.                          
  262.       SETB    DQ
  263.                          
  264.       MOV     A,R5
  265.       CLR     C
  266.       RRC     A
  267.       MOV     R5,A
  268.                          
  269.       DJNZ    R3,LABEL0015
  270.                              
  271. LABEL0018:
  272.       RET    
  273.  
  274. ; FUNCTION WriteOneChar (END)
  275.  
  276. ; FUNCTION ReadTemp (BEGIN)
  277. ReadTemp:                                          
  278.                                            
  279.                                            
  280. ;---- Variable 'a' assigned to Register 'R2' ----
  281.       CLR     A
  282.       MOV     R2,A
  283.                                            
  284. ;---- Variable 'b' assigned to Register 'R7' ----
  285.       MOV     R7,A  
  286.                          
  287.                          
  288.       LCALL   L_CC
  289.                          
  290.       CLR     flag1
  291.                          
  292.       MOV     R7,#044H
  293.                          
  294.                            
  295.  
  296.       LCALL   LABEL34
  297.                          
  298.       CLR     flag1
  299.                          
  300.                          
  301.                          
  302.       LCALL   L_CC
  303.                          
  304.       CLR     flag1
  305.                          
  306.       MOV     R7,#0BEH
  307.                          
  308.                          
  309.       LCALL   label34
  310.                          
  311.       CLR     flag1
  312.                          
  313.       LCALL   ReadOneChar
  314.       MOV     R2,AR7
  315.                          
  316.       SETB    flag1
  317.                          
  318.       LCALL   ReadOneChar
  319.                          
  320.       CLR     flag1
  321.                          
  322.       MOV     A,R7
  323.       SWAP    A
  324.       ANL     A,#0F0H
  325.       MOV     temp_value,A
  326.                          
  327.       MOV     A,R2
  328.       ANL     A,#0F0H
  329.       SWAP    A
  330.       ANL     A,#0FH
  331.       ADD     A,temp_value
  332.       MOV     temp_value,A
  333.                          
  334.       RET    
  335. ; FUNCTION ReadTemp (END)
  336.  
  337. ; FUNCTION temp_to_str (BEGIN)
  338.                          
  339. temp_to_str:                          
  340.                          
  341.       MOV     A,temp_value
  342.       MOV     B,#0AH
  343.       DIV     AB
  344.       ADD     A,#030H
  345.       MOV     TempBuffer,A
  346.                          
  347.       MOV     A,temp_value
  348.       MOV     B,#0AH
  349.       DIV     AB
  350.       MOV     A,B
  351.       ADD     A,#030H
  352.       MOV     TempBuffer+01H,A
  353.                          
  354.       MOV     TempBuffer+02H,#0DFH
  355.                          
  356.       MOV     TempBuffer+03H,#043H
  357.                          
  358.  
  359.       CLR     A
  360.       MOV     TempBuffer+04H,A
  361.                          
  362.       RET    
  363.  
  364.  
  365. ; FUNCTION temp_to_str (END)
  366.  
  367.  
  368.  
  369. ; FUNCTION Delay1ms (BEGIN)
  370.                                            
  371. ;---- Variable 'count' assigned to Register 'R6/R7' ----
  372.  
  373. Delay1ms:                                        
  374.                                            
  375. ;---- Variable 'i' assigned to Register 'R4/R5' ----
  376.           CLR     A
  377.           MOV     R5,A
  378.           MOV     R4,A
  379. LABEL0021:
  380.           CLR     C
  381.           MOV     A,R5
  382.           SUBB    A,R7
  383.           MOV     A,R4
  384.           SUBB    A,R6
  385.           JNC     LABEL0027
  386.                              
  387. ;---- Variable 'j' assigned to Register 'R2/R3' ----
  388.           CLR     A
  389.           MOV     R3,A
  390.           MOV     R2,A
  391. LABEL0024:
  392.           INC     R3
  393.           CJNE    R3,#00H,LABEL0032
  394.           INC     R2
  395. LABEL0032:
  396.           MOV     A,R3
  397.           XRL     A,#078H
  398.           ORL     A,R2
  399.           JNZ     LABEL0024
  400. LABEL0023:
  401.           INC     R5
  402.           CJNE    R5,#00H,LABEL0033
  403.           INC     R4
  404. LABEL0033:
  405.           SJMP    LABEL0021
  406.                              
  407. LABEL0027:
  408.           RET    
  409. ; FUNCTION Delay1ms (END)
  410.  
  411.  
  412.  
  413. ; FUNCTION main (BEGIN)
  414. start:                          
  415.                          
  416.                          
  417.       LCALL   LCD_Initial
  418.                          
  419.       MOV     x,#01H
  420.                          
  421.       CLR     flag1
  422.                          
  423.       CLR     flag2
  424.  
  425. LABEL0028:                                          
  426.                          
  427.                          
  428.  
  429.       LCALL   ReadTemp
  430.                          
  431.       LCALL   temp_to_str
  432.                          
  433.       ;CLR     ?LCD_Write?BIT
  434.       CLR     PSW.1
  435.       ;MOV     ?LCD_Write?BYTE,#080H
  436.       MOV     R0, #080h
  437.  
  438.       LCALL   LCD_Write
  439.                          
  440.      
  441.       MOV     R1, #TempBuffer
  442.       LCALL   Print
  443.                          
  444.       MOV     R7,#090H
  445.       MOV     R6,#01H
  446.       LCALL   Delay1ms
  447.                          
  448.       SJMP    LABEL0028
  449.  
  450.      
  451.  
  452. ; FUNCTION main (END)
  453. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement