Advertisement
Guest User

code

a guest
Nov 30th, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.69 KB | None | 0 0
  1.  ;dinh nghia 1 so label
  2. dq  bit p3.2
  3. rs  bit p3.5
  4. en  bit p3.4
  5.  
  6. byte0   data    077h
  7. byte1   data    078h
  8. byte2   data    079h
  9. byte3   data    07ah
  10. byte4   data    07bh
  11. byte5   data    07ch
  12. byte6   data    07dh
  13. byte7   data    07eh
  14. byte8   data    07fh
  15.  
  16. dau     data    076h
  17. tram    data    071h
  18. chuc    data    072h
  19. dvi     data    073h
  20. tphan   data    074h
  21. temp    data    075h
  22. ORG 2000H
  23.     lcall   ds1820_init;khoi dong ds1820
  24.     lcall   lcd_init;khoi dong lcd
  25. main:      
  26.     ;lcall   ds1820_init;khoi dong ds1820
  27.     ;lcall   lcd_init;khoi dong lcd
  28.     lcall LCD_CLEAR
  29.         mov     a,#44h;chuyen doi nhiet do
  30.         lcall   write_byte
  31.         lcall   delay750
  32.  
  33.         lcall   ds1820_init
  34.         mov     a,#0beh;doc du lieu tu ds1820
  35.         lcall   write_byte
  36.         lcall   get_dt
  37.         ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  38.         ; khoi dong ngat
  39.         ;--------------------------
  40.         lcall   decode;chuyen nhiet do nhan dc sang BCD
  41.         lcall   write_temp;ghi nhiet do ra lcd
  42.         lcall   delay5
  43.         sjmp    main      
  44.  
  45. ;-------------------------------------------------------    
  46. ;chuong trinh khoi dong ds18s20
  47. ;keo bus low >480us
  48. ;release bus 15-60us
  49. ;ds18s20 keo bus low 60-240us
  50. ;-------------------------------------------------------
  51.  
  52. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
  53. ds1820_init:
  54.         clr     dq
  55.         mov     r7,#240;delay 480us
  56.         djnz    r7,$
  57.         setb    dq
  58.         mov     r7,#35;delay 70us
  59.         djnz    r7,$
  60.         jb      dq,$;kiem tra nhan dc presence pulse
  61.         jnb     dq,$
  62.         mov     a,#0cch;skip room
  63.         lcall   write_byte
  64.         ret
  65.  
  66. ;-------------------------------------------------------    
  67. ;chuong trinh ghi bit vao ds18s20
  68. ;ghi tu LSB-MSB
  69. ;-------------------------------------------------------    
  70. write_byte:
  71.         clr     ea;disable interupt
  72.         mov     r6,#8
  73. w1:     rrc     a
  74.  
  75.         jc      w2
  76.         lcall   write0
  77.         sjmp    w3
  78. w2:     lcall   write1
  79. w3:     djnz    r6,w1
  80.         setb    ea;enable interupt
  81.         ret
  82.  
  83. ;ghi bit 0 vao ds18s20
  84. write0:
  85.         push    acc
  86.         clr     dq
  87.         mov     r7,#60
  88.         djnz    r7,$;delay 120us
  89.         setb    dq
  90.         pop     acc
  91.         ret
  92.  
  93. ;ghi bit 1 vao ds18s20
  94. write1:
  95.         push    acc
  96.         clr     dq
  97.         setb    dq
  98.         mov     r7,#60
  99.         djnz    r7,$
  100.         setb    dq
  101.         pop     acc
  102.         ret
  103.  
  104. ;-------------------------------------------------------    
  105. ;chuong trinh doc bit tu ds18s20
  106. ;master keo bus low >1us xong release bus
  107. ;master phai lay mau bus <15us tu khi keo bus low
  108. ;delay them >45us
  109. ;-------------------------------------------------------    
  110. read_byte:
  111.         clr     ea
  112.         setb    dq
  113.         mov     r6,#8
  114.         mov     a,#0
  115. rd1:    lcall   read_bit
  116.         rrc     a
  117.         mov     r7,#25
  118.         djnz    r7,$
  119.         djnz    r6,rd1
  120.         setb    ea
  121.         ret
  122.  
  123. read_bit:
  124.         clr     dq
  125.         setb    dq;1us
  126.         mov     r7,#6;2us
  127.         djnz    r7,$;12us
  128.         mov     c,dq
  129.         ret
  130.  
  131. ;-------------------------------------------------------        
  132. ;nhan 9 byte du lieu tu ds18s20
  133. ;nhan tu LSB-MSB,byte0-byte9
  134. ;-------------------------------------------------------    
  135. get_dt:
  136.         lcall   read_byte
  137.         mov     byte0,a
  138.         lcall   read_byte
  139.         mov     byte1,a
  140.         lcall   read_byte
  141.         mov     byte2,a
  142.         lcall   read_byte
  143.         mov     byte3,a
  144.         lcall   read_byte
  145.         mov     byte4,a
  146.         lcall   read_byte
  147.         mov     byte5,a
  148.         lcall   read_byte
  149.         mov     byte6,a
  150.         lcall   read_byte
  151.         mov     byte7,a
  152.         lcall   read_byte
  153.         mov     byte8,a
  154.         ret
  155.  
  156. ;-------------------------------------------------------    
  157. ;chuong trinh giai ma nhiet do do dc sang BCD
  158. ;luu cac gia tri sang cac data da dinh nghia
  159. ;-------------------------------------------------------    
  160. decode:
  161. ;a/xu ly dau:
  162.         mov     a,byte1
  163.         cjne    a,#0ffh,duong
  164. am:     mov     dau,#'-'
  165. ;xu li nhiet do am
  166.         mov     a,byte0
  167.         cpl     a
  168.         mov     byte0,a
  169.         sjmp    xulithphan
  170.         ;----------------------
  171. duong:  mov     dau,#'+'
  172.    
  173.  
  174. xulithphan:  
  175. ;b/xu ly thap phan
  176.         mov     a,byte0
  177.         clr c
  178.         rrc a
  179.         mov temp,a
  180.         jc  dc_nx
  181.         mov tphan,#0
  182.         sjmp    dc_ex1
  183. dc_nx:  mov tphan,#5
  184.  
  185.    
  186. dc_ex1: nop
  187. ;c/xu ly phan nguyen:
  188.         mov a,temp
  189.         mov     b,#10
  190.         div     ab
  191.         mov     dvi,b
  192.         mov     b,#10
  193.         div     ab
  194.         mov     chuc,b
  195.         mov     tram,a
  196.         ret
  197.  
  198.  
  199. ;-------------------------------------------------------    
  200. ;delay 750ms de cho ds18s20 convert T
  201. ;-------------------------------------------------------    
  202. delay750:
  203.         mov     r7,#15
  204. d2:     mov     r6,#100
  205. d1:     mov     r5,#250
  206.         djnz    r5,$
  207.         djnz    r6,d1
  208.         djnz    r7,d2
  209.         ret
  210.  
  211. delay2:
  212.         mov     r7,#0ffh
  213.         djnz    r7,$
  214.         ret
  215.  
  216. ; -----------------------------------------------------
  217. ;Chuong trinh cua LCD
  218. ; -----------------------------------------------------
  219. lcd_init:
  220.         mov     dptr,#8000h
  221.         mov     a,#38h      ;bus du lieu 8 bit, hien thi 2 hang
  222.         lcall   write_cmd
  223.         mov     a,#0ch      ;bat lcd, bat con tro  
  224.         lcall   write_cmd        
  225.         mov     a,#06h      ; tu dong chuyen con tro
  226.         lcall   write_cmd
  227.         ret
  228. ; -----------------------------------------------------
  229. wait_lcd:
  230.         MOV TMOD,#01H
  231.     MOV TH0,#HIGH(-5000)
  232.     MOV TL0,#LOW(-5000)
  233.     SETB TR0
  234.     JNB TF0,$
  235.     CLR TF0
  236.     CLR TR0
  237.     RET
  238.    
  239.    
  240.     LCD_CLEAR:
  241.     CLR RS
  242.     SETB EN
  243.     MOV A,#02H
  244.  
  245.     MOV DPTR , #8000H
  246.     MOVX @DPTR,A
  247.     CLR EN
  248.     LCALL DL_LCD;
  249.     RET
  250. ; -----------------------------------------------------
  251. write_cmd:
  252.  
  253.     CLR RS
  254.     SETB EN
  255.     MOV DPTR , #8000H
  256.     MOVX @DPTR,A
  257.     CLR EN
  258.     LCALL DL_LCD
  259.     RET
  260. ; -----------------------------------------------------
  261. write_char:
  262.     SETB RS
  263.     SETB EN
  264.     MOV DPTR , #8000H
  265.     MOVX @DPTR,A
  266.     CALL DL_LCD
  267.     CLR EN
  268.     RET
  269. ; -----------------------------------------------------
  270. DL_LCD:
  271.     MOV TMOD,#01H
  272.     MOV TH0,#HIGH(-5000)
  273.     MOV TL0,#LOW(-5000)
  274.     SETB TR0
  275.     JNB TF0,$
  276.     CLR TF0
  277.     CLR TR0
  278.     RET
  279.    
  280. write_temp:
  281.     mov a,#'t'
  282.     lcall   write_char
  283.     mov a,#'='
  284.     lcall   write_char
  285.     mov a,dau
  286.     lcall   write_char
  287.     mov a,tram
  288.     add a,#30h
  289.     lcall   write_char
  290.     mov a,chuc
  291.     add a,#30h
  292.     lcall   write_char
  293.     mov a,dvi
  294.     add a,#30h
  295.     lcall   write_char
  296.     mov a,#'.'
  297.     lcall   write_char
  298.     mov a,tphan
  299.     add a,#30h
  300.     lcall   write_char
  301.     mov a,#'*'
  302.     lcall   write_char
  303.     mov a,#'C'
  304.     lcall   write_char
  305.     ret
  306. ; -----------------------------------------------------
  307. delay5:;delay 0.2s, refresh lcd
  308.     mov r7,#10
  309. dl1:    mov r6,#200
  310. dl2:    mov r5,#50
  311.     djnz    r5,$
  312.     djnz    r6,dl2
  313.     djnz    r7,dl1
  314.     ret
  315. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement