Advertisement
Guest User

Untitled

a guest
Nov 26th, 2018
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; .
  2. dseg  at 30h
  3.     symb1: ds 1         ;
  4.     symb2: ds 1          
  5.     symb3: ds 1
  6.     symb4: ds 1        
  7.     symb5: ds 1
  8.     symb6: ds 1
  9.     symb7: ds 1
  10.     org 40h
  11.    stack: ds 20             ; резервируем под стек 20 байт
  12.    poz    EQU R5            ; номер активного знакоместа
  13.    cycpoz EQU R1                ;
  14.    RG2 EQU 0A000h           ; внешние порты светодиодного индикатора
  15.    RG3 EQU 0B000h               ;
  16.      
  17.    cseg                  
  18.    jmp start
  19.    org 000Bh            ;
  20.    jmp TIMER_0_ISR      ;
  21.    org 30h          ;
  22.    num_mass: db 00111111b,00000110b,01011011b,01001111b,01100110b,01101101b,01111101b,00000111b,01111111b,01101111b,01000000b          
  23.                         ;"0"=3Fh    ;"1"=06h    ;"2"=5Bh   ;"3"=4Fh ;"4"= 66h ;"5"=6Dh  ;"6"=7Dh    ;"7"= 07h  ;"8"= 7Fh    ;"9"=6Fh    ;"-"=40h       
  24.                         ; массив кодов чисел от "0" до "9" + тире ("-")
  25.    org 3Bh  ;
  26.    poz_mass: db   10111111b,11011111b,11101111b,11110111b,11111011b,11111101b
  27.                     ;   BFh ;   DFh ;   EFh   ; F7h ;  FBh
  28.                     ; массив кодов знакомест
  29.    org 50h 
  30. start:  ;
  31.     mov symb1,#0    ;
  32.     mov symb2,#0
  33.     mov symb3,#2
  34.     mov symb4,#0
  35.     mov symb5,#0
  36.     mov symb6,#0
  37.  
  38.         mov scon, #01000000b        ; serial port control
  39.                     ; Включить асинхронный режим работы последовательного порта
  40.                         ; Обнулить флаг приемника RI
  41.         mov IE,#10000010b       ; interrupt enable control разрешаем прерывания(EA=1),
  42.                             ; а именно - прерывания по переполнению таймера 0 и 1
  43.     mov TMOD,#00100001b     ; Timer/counter mode control установка режима 1 для таймеров 0 и 1
  44.     mov TH0,#high(65536-6000)   ; timer0 high byte  Переполнение- каждые 6000мкс
  45.     mov TL0,#low(65536-6000)    ; timer0 low byte
  46.     mov TH1,#256-3          ; timer1 high byte  256 - (f/12)/(32*V)
  47.         mov TL1,#256-3          ; timer1 low byte
  48.     setb TR0    ; запуск таймера 0
  49.     setb TR1    ; запуск таймера 1
  50.     setb REN    ; Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных
  51.  
  52. start_receive:  ;
  53. mov cycpoz,#30h ;
  54. receive:        ;
  55.     JNB RI,receive  ; RI Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания          
  56.                 ; Подождать окончания приема байта по последовательному порту ( пока 0 принимаем => JNB )
  57.     mov a,SBUF          ; и скопировать его в аккумулятор
  58.  
  59.     clr RI      ;
  60.     mov @cycpoz,a   ;
  61.     inc cycpoz      ;
  62.    cjne cycpoz,#36h,receive ;
  63.    jmp zeend                ;
  64.    
  65. TIMER_0_ISR :   ;
  66.     mov TH0,#high(65536-1000)   ;
  67.     mov TL0,#low(65536-1000)  ;
  68.    
  69. POZ_i: 
  70.     mov A,#3Bh   ; в Асс - базовый адресс таблицы кодов знакомест
  71.     mov DPH,#0  ;  
  72.     mov DPL,poz  ; в DPTR - номер знакоместа,которое будем делать активным
  73.     movc A,@A+DPTR  ; в Асс-код знакоместа код знакоместа
  74.     mov DPTR,#RG2      
  75.     movx @DPTR,A    ; вывод в RG2  
  76.  
  77.     mov A,#30h    ; в Асс - адрес переменной min_hi в памяти данных
  78.     add A,poz     ; выводимая цифра зависит от текущей позиции
  79.                       ; (0 - min_hi,1 - min_lo,...,4 - sec_lo)
  80.                    
  81.     mov R0,A     ;
  82.     mov DPH,#0   ;
  83.     mov DPL,@R0  ;
  84.    
  85.     mov A,#30h  ; в Асс - базовый адресс таблицы кодов цифр
  86.     movc A,@A+DPTR  ;
  87.     mov DPTR,#RG3      
  88.     movx @DPTR,A     ; вывод в RG3
  89.    
  90.     inc poz ; переходим к следующему знакоместу
  91.     cjne poz,#6,END_ISR0   
  92.     mov poz,#0 
  93. END_ISR0:
  94.     reti   
  95. zeend:
  96. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement