Advertisement
Guest User

lab2

a guest
Dec 11th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. cseg  
  2. jmp start
  3. org 40h
  4.  
  5. start:
  6.  
  7.     call lcdini
  8.     call dataa
  9.     aa: nop
  10.     jmp aa
  11.    
  12. dataa:
  13.     push acc
  14.     push b
  15.    
  16.     mov a,  #0E1h       ; Ц
  17.     call write_data
  18.     mov a,#61h          ; а
  19.     call write_data
  20.     mov a,#70h          ; р
  21.     call write_data
  22.     mov a,#0C4h         ; ь
  23.     call write_data
  24.     mov a,#0BAh         ; к
  25.     call write_data
  26.     mov a,#6Fh          ; о
  27.     call write_data
  28.     mov a,#0B3h         ; в
  29.     call write_data
  30.     mov a,#61h          ; а
  31.     call write_data
  32.    
  33.     mov a,#11000000b    ; перенос на 2ую строку
  34.     call write_command
  35.    
  36.     mov a,  #0E0h           ;
  37.     call write_data
  38.     mov a,#16h          ;
  39.     call write_data
  40.     mov a,#0DBh         ;
  41. call write_data
  42.     mov a, #5Ah         ;
  43. call write_data
  44.     mov a,# 0BBh            ;
  45.     call write_data
  46.     mov a,#0F6h         ;
  47.     call write_data
  48.     mov a,#3Bh          ;
  49.     call write_data
  50.    
  51. pop b
  52.     pop acc
  53. ret
  54.  
  55.  
  56.  
  57. lcdini:
  58.     mov a,#00101100b ; 4 бита, 2 строки, 5х8 точек
  59.     call write_command
  60.     mov a,#00001101b ; отображение символов, курсор - мерцающее знакоместо
  61.     call write_command
  62.     mov a,#00000110b ; сдвиг вправо
  63.     call write_command
  64.     mov a,#00000001b ; очистка экрана
  65.     call write_command
  66.    
  67.     clr p1.0
  68. ret
  69.  
  70. wait_bf: ; проверка бита занятости
  71.     push acc
  72.     wait_ll:
  73.         mov p1,#11110010b ; C/D=0, R/W=1,E=0
  74.         setb p1.2                             ; E=1
  75.         mov a,p1                            ; чтение старшей тетрады регистра IR
  76.         clr p1.2                              ; E=0
  77.         mov b,a         ;временное хранение старшей тетрады
  78.         setb p1.2
  79.         mov a,p1        ;чтение младшей тетрады
  80.         mov a,b
  81.         jb acc.7,wait_ll ; проверка бита занятости BF
  82.     pop acc
  83. ret
  84.  
  85. write_command:
  86.     push acc
  87.     push b
  88.    
  89.     call wait_bf
  90.    
  91.     mov b,a     ; сохраняем код команды в B
  92.     anl a,#11110000b ; С/D=0,R/W=0,E=0
  93.    
  94.     mov p1,a    ; вывод старшей тетрады
  95.     setb p1.2   ; Е=1
  96.     nop
  97.     clr p1.2    ; Е=0
  98.    
  99.     mov a,b     ; исходная команда
  100.     swap a      ; меняем местами тетрады
  101.     anl a,#11110000b ; С/D=0,R/W=0,E=0
  102.    
  103.     mov p1,a    ; вывод младшей тетрады
  104.     setb p1.2   ; Е=1
  105.     nop
  106.     clr p1.2    ; Е=0
  107.    
  108.     pop b
  109.     pop acc
  110. ret
  111.  
  112.  
  113.  
  114. write_data:
  115.     push acc
  116.     push b
  117.    
  118.     call wait_bf
  119.    
  120.     mov b,a     ; сохраняем данные в B
  121.     anl a,#11110000b ; С/D=0,R/W=0,E=0
  122.     orl a,#00000010b ; C/D=1
  123.    
  124.     mov p1,a    ; старшая тетрада данных
  125.     setb p1.2   ; Е=1
  126.     nop
  127.     clr p1.2    ; Е=0
  128.    
  129.     mov a,b     ; исходные данные
  130.     swap a      ; меняем местами тетрады
  131.     anl a,#11110000b ; С/D=0,R/W=0,E=0
  132.     orl a,#00000010b ; C/D=1
  133.    
  134.     mov p1,a    ; вывод младшей тетрады
  135.     setb p1.2   ; Е=1
  136.     nop
  137.     clr p1.2    ; Е=0
  138.    
  139.     mov p1, #11110000b ; высокий уровень
  140.    
  141.     pop b
  142.     pop acc
  143. ret
  144.  
  145. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement