Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. E equ p1.0
  2. speed equ 14
  3. cseg at 8000h
  4.  
  5. jmp START
  6.  
  7. INIT:
  8.     clr     E
  9.     mov     a,#28h ; 00101000 - DL=0, N = 1, F = 0 (ðàçðÿäíîñòü áóôåðà äàííûõ = 4, äâå ñòðîêè,ðàçìåð ìàòðèöû 5íà8 òî÷åê)
  10.     call    write_command
  11.     mov     a,#0ch ; 00001110 - D = 1,C = 0,B = 0 (îòîáðîæåíèå ñèìâîëîâ âêëþ÷åíî,êóðñîð íå âèäåí,êóðñîð íå âèäåí)
  12.     call    write_command
  13.     mov     a,#06h ; 00000110 - I/D = 1,S = 0 (Ñäâèã ýêðàíà âëåâî(èíêðåìåíò àäðåñà)),ñäâèã ýêðàíà ïîñëå çàïèñè î÷åðåäíîãî çíà÷åíèÿ äàííûõ)
  14.     call    write_command
  15.     mov     a,#01h ; î÷èñòêà ýêðàíà
  16.     call    write_command
  17.     ret
  18.  
  19. timer:
  20.     push    acc
  21.     push    b
  22.     MOV     TH0, #0h
  23.     MOV     TL0, #0h
  24.     MOV     TMOD, #1h
  25.     MOV     R0, #speed
  26.     SETB    TCON.4
  27.     nop
  28.     nop
  29.     nop
  30. again:
  31.     mov     r1, 293
  32.     DJNZ    r1, $  
  33.  
  34.     JNB     TCON.5, $
  35.     CLR     TCON.5
  36.     DJNZ    R0, again
  37.  
  38. skip:
  39.     pop b
  40.     pop acc
  41.     ret
  42.  
  43. wait_bf:
  44.     push acc
  45.  
  46. wait_ll:
  47.     mov     p1,#11110100b
  48.     setb    E
  49.     mov     a,p1
  50.     clr     E
  51.     mov     b,a
  52.     setb    E
  53.     mov     a,p1
  54.     clr     E
  55.     mov     a,b
  56.     jb      acc.7,wait_ll
  57.     pop     acc
  58.     ret
  59.  
  60. write_command:
  61.     call    wait_bf
  62.     push    acc
  63.     push    b
  64.     mov     b,a
  65.     anl     a,#11110000b
  66.     mov     p1,a
  67.     mov     p1,a
  68.     setb    E
  69.     nop
  70.     clr     E
  71.     mov     a,b
  72.     swap    a
  73.     anl     a,#11110000b
  74.     mov     p1,a
  75.     setb    E
  76.     nop
  77.     clr     E
  78.     mov     p1,#11110000b
  79.  
  80.     pop b
  81.     pop acc
  82.     ret
  83.  
  84. write_data:
  85.     push    acc
  86.     push    b
  87.     call    wait_bf
  88.     mov     b,a
  89.    
  90.     anl     a,#11110000b
  91.     orl     a,#00000010b
  92.     mov     p1,a
  93.     setb    E
  94.     nop
  95.     clr     E
  96.     mov     a,b
  97.     swap    a
  98.     anl     a,#11110000b
  99.     orl     a,#00000010b
  100.     mov     p1,a
  101.     setb    E
  102.     nop
  103.     clr     E
  104.     mov     p1,#11110000b
  105.    
  106.     pop b
  107.     pop acc
  108.     ret
  109.  
  110. read_sec:
  111.     ; A have number(vyvod na ekran(sek))
  112.     push    acc
  113.     mov     a,#086h
  114.     call    write_command ;kursor
  115.     pop     acc
  116.     push    acc
  117.     push    b
  118.    
  119.     mov     b,#10 ; delim chislo(bikoz number vvodim v 2 iacheiki)
  120.     div     ab
  121.     add     a,#'0'
  122.     call    write_data
  123.     mov     a,b
  124.     add     a,#'0'
  125.     call    write_data
  126.    
  127.     pop     b
  128.     pop     acc
  129.     ret
  130.  
  131. read_min:
  132.     ; A
  133.     push    acc
  134.     mov     a,#083h
  135.     call    write_command
  136.     pop     acc
  137.     push    acc
  138.     push    b
  139.    
  140.     mov     b, #10
  141.     div     ab
  142.     add     a,#'0'
  143.    
  144.     call    write_data
  145.     mov     a,b
  146.     add     a,#'0'
  147.     call    write_data
  148.    
  149.     pop     b
  150.     pop     acc
  151.     ret
  152.  
  153. read_hour:
  154.     ; A
  155.     push    acc
  156.     mov     a,#080h
  157.     call    write_command
  158.     pop     acc
  159.     push    acc
  160.     push    b
  161.    
  162.     mov     b,#10
  163.     div     ab
  164.     add     a,#'0'
  165.    
  166.     call    write_data
  167.     mov     a,b
  168.     add     a,#'0' ;chotoby poluchit kod chisla a nado pribavit #'0'
  169.     call    write_data
  170.    
  171.     pop     b
  172.     pop     acc
  173.     ret
  174.  
  175. START:
  176.     call    INIT
  177.    
  178.     push    acc
  179.     push    b
  180.    
  181.     mov     a,#080h ;àäðåñ ïåðâîãî çíàêîìåñòà âåðõíåé ñòðîêè
  182.     call    write_command
  183.    
  184.     mov     r7,#8
  185.     mov     dptr,#text_clock
  186.  
  187. label1:
  188.     mov     a,#0
  189.     movc    a,@a+dptr
  190.     inc     dptr
  191.     call    write_data
  192.     ;call timer
  193.     ;mov a,#080h ;àäðåñ ïåðâîãî çíàêîìåñòà âåðõíåé ñòðîêè
  194.     ;call write_command
  195.     djnz r7,label1
  196.  
  197.     mov     a,#0C0h ;àäðåñ ïåðâîãî çíàêîìåñòà íèæíåé ñòðîêè
  198.     call    write_command
  199.    
  200.     mov     r7,#8
  201.     mov     dptr,#text
  202.  
  203. label2:
  204.     mov     a, #0
  205.     movc    a,@a+dptr
  206.     call    write_data
  207.     inc     dptr
  208.     djnz    r7,label2
  209.    
  210.     pop     b
  211.     pop     acc
  212.    
  213.     mov     r4,#0h //cek
  214.     mov     r3,#0h //mins
  215.     mov     r2,#0h //hour
  216.    
  217.     mov     a,r2
  218.     call    read_hour
  219.     mov     a,r3
  220.     call    read_min
  221.     mov     a,r4
  222.     call    read_sec
  223.  
  224. time:
  225.     call    timer //pause 1 cek
  226.     inc     r4
  227.    
  228.     mov     a,r4
  229.     add     a,#-60
  230.     jnz     time_sec
  231.    
  232.     mov     r4,#0
  233.     inc     r3
  234.     mov     a,r3
  235.     add     a,#-60
  236.     jnz     time_min
  237.    
  238.     mov     r3,#0
  239.     inc     r2
  240.     mov     a,r2
  241.     add     a,#-24
  242.     jnz     time_hour
  243.     mov     r2,#0
  244.      
  245. time_hour:
  246.     mov     a,r2
  247.     call    read_hour
  248.      
  249. time_min:
  250.     mov     a,r3
  251.     call    read_min
  252.      
  253. time_sec:
  254.     mov     a,r4
  255.     call    read_sec
  256.    
  257.     jmp     time
  258.     nop
  259.  
  260. text_clock: db '00:00:00'
  261. text: db 'LCDCLOCK'
  262. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement