daily pastebin goal
56%
SHARE
TWEET

Untitled

a guest Nov 26th, 2018 125 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
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top