Рефераты. Цифровой осциллограф






     using    0         ;использовать банк регистров 0


Config:

      mov SP,#07Fh      ;стек расположен по адресу 80h в ОЗУ


;----------------------------------------------------------------

; Настройка WDT

;----------------------------------------------------------------

;Отключение WDT

      clr EA             ;Запретить все прерывания

      mov WDTCN, #0DEh

      mov WDTCN, #0ADh

      setb EA   


                 

;----------------------------------------------------------------

; Настройка портов ввода-вывода

;----------------------------------------------------------------


      mov SFRPAGE, #00Fh ;Переход на страницу F  SFR


;Связывание периферийных устройств с разрядами портов


      mov XBR0, #000h  

                              

      mov XBR1, #080h   ;биты      SYSCKE T2EXE T2E INT1E T1E INT0E T0E CP1E

                  ;значения     1      0   0    0    0    0    0    0


                  ;/SYSCLK подключен

                            

      mov XBR2, #040h   ;биты       WEAKPUD XBARE CNVST2E T4EXE T4E UART1E EMIFLE CNVST0E

                    ;значения      0      1     0        0   0    0       0      0


                  ;Разрешить установленные перемычки

     

;Настройка режимов вывода разрядов портов


;1 - режим Push-Pull

;0 - режим Open-Drein


      mov P0MDOUT, #03Fh 


;Результат настройки портов ввода-вывода

;порт P0

       ;P0.0 = SYSCLK     (Push-Pull Output)(Digital)

       ;P0.1 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.2 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.3 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.4 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.5 = GP I/O     (Push-Pull Output)(Digital)

       ;P0.6 = GP I/O     (Open-Drain Output/Input)(Digital)

       ;P0.7 = GP I/O     (Open-Drain Output/Input)(Digital)


      mov P1MDOUT, #0FFh

      mov P3MDOUT, #0FFh



;----------------------------------------------------------------

; Настройка генератора (SYSCLK=100 МГц и на P0.6 выводится 50 МГц )

;----------------------------------------------------------------

      mov SFRPAGE, #00Fh


      mov OSCICN, #083h ;1    ;биты     IOSCEN IFRDY - - - - IFCN1 IFCN0

                         ;значения    1     0             1     1

                 

                         ;внутренний генератор разрешён

                         ;частота не программируется

                         ;значение предделителя = 1 (SYSCLK=25 МГц)


      mov PLL0CN, #000h ;2    ;PLL использует в качестве опорной частоты

                        ;частоту внутреннего генератора


      mov SFRPAGE, #000h

      mov FLSCL, #030h  ;3    ;биты      -  -   FLRT   - - - FLWE 

                          ;значения         1  1           0


                        ;стирание и запись Flash памяти запрещена

                        ;Память работает на частоте SYSCLK <= 100 MHz


      mov SFRPAGE, #00Fh

      mov PLL0CN, #001h  ;4   ;PLL включен

      mov PLL0DIV, #001h ;5   ;предделитель PLL установлен в 1

     

      mov PLL0FLT, #001h ;6   ;диапазон частот, которые делятся 19-30 МГц

                     ;7   ;выходная частота PLL = 65-100 МГц

      mov PLL0MUL, #004h ;8   ;коэффициент умножения PLL равен 4


      ;задержка - 5 мкс  ;9

      mov i, #040h            ;установка задержки

      djnz i, $               ;i-- и переход на себя, если не 0

   

      mov PLL0CN, #003h  ;10  ;включение PLL

     

      mov i, #0FFh            ;установка задержки


PLL_WAIT:


      dec i

      mov ACC, i        ;если нет синхронизации с PLL в течении 5us,

      jz PLL_NOWAIT           ;то ошибка в установках PLL

      mov ACC, PLL0CN

      jnb ACC.4, PLL_WAIT     ;задержка до появления синхроимпульсов с PLL

      mov CLKSEL, #022h ;системная частота берётся с PLL и

                        ;делится на 4 перед выводом на P0.0


PLL_NOWAIT:


     

;----------------------------------------------------------------

; Настройка таймера

;----------------------------------------------------------------


;таймер 3 используется для задания частоты дискретизации сигнала с АЦП

 

      mov SFRPAGE, #001h;


      mov TMR3CF, #008h  ; Таймер 3 тактируется от частоты SysClk

                 




;----------------------------------------------------------------

; Настройка прерываний

;----------------------------------------------------------------

      mov SFRPAGE, #000h

      mov IE, #000h          ;Запретить все прерывания

      mov IP, #000h          ;Все устройства имеют низкий приоритет


;-----------------------------------------------------------------

; Главная часть программы

;-----------------------------------------------------------------


; Настройка контроллера SED1335


ConfigSED1335:

      mov R1,#40h    ;установка системы   

      lcall WrComm

      mov DPTR,#msg1 ;параметры установки системы

      lcall WrData


      mov R1,#44h    ;прокрутка

      lcall WrComm

      mov dptr,#msg2 ;параметры прокрутки

      lcall WrData


      mov r1,#5Dh    ;форма курсора

      lcall WrComm

      mov dptr,#msg3 ;параметры курсора

      lcall WrData


      mov r1,#4Ch    ;направление курсора

      lcall WrComm


      mov R1,#5Ah  ;прокрутка по точкам

      lcall WrComm

      mov DPTR,#msg18  ;параметр прокрутки по точкам

      lcall WrData


      mov dptr,#5Bh  ;наложение

      lcall WrComm

      mov dptr,#msg4 ;параметр наложения

      lcall WrData

     

      mov r1,#59h    ;включение/выключение дисплея

      lcall WrComm

      mov dptr,#msg5; параметр дисплея

      lcall WrData



Dig_osc: 

      mov kf,Button_kf 

     

;Выделение битов b2,b1,b0 и запись в kf1

      mov A, kf

      anl A, #007h

      mov kf1, A


;Выделение битов b5,b4,b3 и запись в kf2

      mov A, kf

      RR A

      RR A

      RR A

      anl A, #007h

      mov kf2, A

 

      mov CoefAmplif,Button_CoefAmplif

      mov switch,CoefAmplif


      call InputADC1

      call Converting


; Вывод осциллограммы

      mov R1,#46h; установка курсора

      lcall WrComm

      mov DPTR,#msg6

      lcall WrData

     

      mov R1,#42h; запись в память дисплея

      lcall WrComm

      mov DPTR,#00h


M0:   movx A, @DPTR           ;загрузка в A данных из XRAM

      cjne A, #0A1h, M1       ;загружены все данные?

      ljmp M2


M1:

      mov R1, A

      clr p3.2    ;a0=0=данные

      mov A, R1   ; послать байт данных

      mov P1, A

      clr P3.0    ; CS - строб

      clr P3.1    ; дисплея

      setb P3.1

      setb P3.0

      inc DPTR

      sjmp M0   ; следующий байт


M2:

      sjmp Dig_osc



; Подпрограммы


; WrComm посылает байт в контроллер в виде команды


WrComm:

      setb P3.2   ; a0=1=команда

WrComm_1:

      mov A, R1   ; послать байт данных

      mov P1, A

      clr P3.0    ; CS - строб

      clr P3.1    ; дисплея

      setb P3.1

      setb P3.0

      ret


Write:  clr p3.2       ;a0=0=данные

      sjmp WrComm_1












; WrData посылает байт на который указывает

; DPTR в контроллер ввиде данных.


WrData: clr A                

      movc A, @A+DPTR       ;загрузка в A значения параметра, записанного в ПЗУ

      cjne A, #0A1h, WrData1;загружены все параметры?

      ret


WrData1:

      mov R1, A

      lcall Write   ; отправить

      inc DPTR

      sjmp WrData   ; следующий байт



;-----------------------------------------------------------------

; Подпрограмма ввода с канала 1 АЦП

;-----------------------------------------------------------------

InputADC1:

      mov SFRPAGE, #00Fh                            


;Ввод в XRAM 240 байтов


      cjne kf1,#001h,_5MHz1

;--------------------------

;Частота дискретизации 10 МГц

;--------------------------

_10MHz1:

      mov DPTR, #000h         ;3 

      mov ACC, Padc1            ;3

      movx @DPTR, A             ;3         

      nop               ;1

      mov DPTR, #001h          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop  

      mov DPTR, #002h          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop              

;     .

;     .

;       .

      mov DPTR, #0EFh          

      mov ACC, Padc1           

      movx @DPTR, A                        

      nop  


;---------------------------

;Частота дискретизации 5 МГц

;---------------------------

_5MHz1:

      cjne kf1, #002h, _2_5MHz1


      mov DPTR, #000h  

Input1_2:

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             


      ;задержка 70 нс

      nop

      nop

      nop

      nop

      nop

      nop

      nop

      cjne A, DPL, Input1_2       


;-----------------------------

;Частота дискретизации 2.5 МГц

;-----------------------------

_2_5MHz1:

      cjne kf1, #003h, _500KHz1


      ; Задание числа c которого считает таймер

     

      mov DPTR, #000h  

Input1_3:

      mov A, Padc1        ;2     

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             


      ;задержка 270 нс

      mov i,#008h       ;2

      djnz i,$            ;3

      nop


      nop


      cjne A, DPL, Input1_3       

;-----------------------------

;Частота дискретизации 500 КГц

;-----------------------------

_500KHz1:

      cjne kf1, #004h, _250KHz1


      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FFh

      mov RCAP3L,#05Ch

           

      mov DPTR, #000h  

Input1_4:

      mov SFRPAGE, #00Fh  ;3

      mov A, Padc1          ;2  

      movx @DPTR, A         ;3             

      inc DPTR        ;1   

      mov A, #0F0h          ;2   

      mov SFRPAGE, #001h  ;3

      mov TMR3CN, #004h   ;3

     


      ;задержка 1690 нс


      jnb TMR3CN.7,$     ;4

      nop

      nop



      mov TMR3CN,#000h   ;3

      mov TMR3H,#0FFh ;3

      mov TMR3L,#05Ch ;3


      cjne A, DPL, Input1_4  ;5   

;-----------------------------

;Частота дискретизации 250 КГц

;-----------------------------

_250KHz1:

      cjne kf1, #005h, _50KHz1


      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FEh


      mov RCAP3L,#094h

           

      mov DPTR, #000h  

Input1_5:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  

     


      ;задержка 3690 нс


      jnb TMR3CN.7,$

      nop

      nop


      mov TMR3CN,#000h       

      mov TMR3H,#0FEh ;3

      mov TMR3L,#094h ;3


      cjne A, DPL, Input1_5       


;-----------------------------

;Частота дискретизации 50 КГц

;-----------------------------

_50KHz1:

      cjne kf1, #006h, _25KHz1


      ;Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3H,#0F8h

      mov RCAP3L,#054h


      mov DPTR, #000h  

Input1_6:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h


        

      ;задержка 19690 нс

      jnb TMR3CN.7,$    

      nop

      nop


      mov TMR3CN,#000h 

      mov TMR3H,#0F8h

      mov TMR3L,#054h


      cjne A, DPL, Input1_6       

;-----------------------------

;Частота дискретизации 25 КГц

;-----------------------------

_25KHz1:

      cjne kf1, #007h, _5KHz1


      mov SFRPAGE, #001h

      mov RCAP3H,#0F0h

      mov RCAP3L,#084h


      mov DPTR, #000h  

Input1_7:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  


      ;задержка 39 690 нс

      jnb TMR3CN.7,$

      nop

      nop

  

        mov TMR3CN,#000h 

      mov TMR3H,#0F0h

      mov TMR3L,#084h

     

      cjne A, DPL, Input1_7       

;-----------------------------

;Частота дискретизации 5 КГц

;-----------------------------

_5KHz1:

      cjne kf1, #008h, _2_5KHz1


      mov SFRPAGE, #001h

      mov RCAP3H,#0B2h

      mov RCAP3L,#004h


      mov DPTR, #000h  

Input1_8:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h  


      ;задержка 199690 нс

      jnb TMR3CN.7,$  

      nop

      nop 


        mov TMR3CN,#000h 

      mov TMR3H,#0B2h

      mov TMR3L,#004h

     

      cjne A, DPL, Input1_8       

;-----------------------------

;Частота дискретизации 2.5 КГц

;-----------------------------

_2_5KHz1:

      cjne kf1, #009h, _500Hz1


      mov SFRPAGE, #001h

      mov RCAP3H,#063h

      mov RCAP3L,#0E4h 


      mov DPTR, #000h  

Input1_9:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h


      ;задержка 399 690 нс

      jnb TMR3CN.7,$ 

      nop

      nop  

     

      mov TMR3CN,#000h 

      mov TMR3H,#063h

      mov TMR3L,#0E4h

     

      cjne A, DPL, Input1_9       


;-----------------------------

;Частота дискретизации 500 Гц

;-----------------------------

_500Hz1:

      cjne kf, #010h, _250Hz1


      ; Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3L,#000h

      mov RCAP3H,#000h


      mov DPTR, #000h  

Input1_10:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h  

      mov TMR3CN, #004h

     

      ;задержка 1 999 690 нс

      mov i,#3

M1_10:


      mov TMR3CN, #004h

      jnb TMR3CN.7,$  

 

        mov TMR3CN,#000h 

            mov TMR3H,#000h

      mov TMR3L,#000h

     

      djnz i, M1_10    

     

      cjne A, DPL, Input1_10      


;-----------------------------

;Частота дискретизации 250 Гц

;-----------------------------

_250Hz1:

      cjne kf1, #011h, ExitInputADC


      ; Задание числа c которого считает таймер

     

      mov SFRPAGE, #001h

      mov RCAP3L,#000h

      mov RCAP3H,#000h


      mov DPTR, #000h  

Input1_11:

      mov SFRPAGE, #00Fh

      mov A, Padc1             

      movx @DPTR, A                        

      inc DPTR           

      mov A, #0F0h             

      mov SFRPAGE, #001h 

      mov TMR3CN, #004h

     

      ;задержка 3 999 690 нс

      mov i,#006d

M1_11:


      mov TMR3CN, #004h  

      jnb TMR3CN.7,$    

   

      mov TMR3CN,#000h 

      mov TMR3H,#000h

      mov TMR3L,#000h

     

      djnz i, M1_11

     

      cjne A, DPL, Input1_11

     

ExitInputADC:    

      ret



;----------------------------------------------------------------

; Подпрограмма заполняет память XRAM данными,

; которые записываются в память дисплея

;----------------------------------------------------------------

Converting:

      mov DPTR, #200h



L1:   ;Смещение адреса на 240 байтов назад

      mov A, DPH

      clr C

      subb A, #02h

      mov DPH,A

     

      movx A, @DPTR 

      mov R1, A      ;в R1 номер пикселя в строке

           

        ;вычисление адреса байта на дисплее

      mov B, #08h

      div AB

      mov R3, A ; в R3 адрес байта

     

      ;вычисление номера пикселя в байте

      inc A

      mov B, #08h

      mul AB

      clr C

      subb A, R1

     

      ;установка бита в байте

      mov R7, A

      inc R7

      mov A, #01h


L0:   RLC A

      dec R7

      cjne R7, #00h, L0

      mov R7, A ; в R7 содержимое байта


      ;запись в XRAM байта с установленным битом    

      mov DPH, #02h

      mov DPL, R3

      mov A,R7

      movx @DPTR, A

     

      mov A, DPH

      cjne A, #1Fh, L1 


;Запись метки конца массива данных

      mov DPTR, #2000h

      mov A, #0A1h

      movx @DPTR, A

      ret




;----------------------------------------------------------------

; Таблицы и данные

;----------------------------------------------------------------


; Инициализация параметров SED1335.

;установка системы

msg1: db 30h, 87h, 07h, 27h, 39h, 0EFh, 28h, 0h, 0A1h

;прокрутка

msg2: db 0, 0, 0EFh, 0B0h, 04h, 0EFh, 0, 0, 0, 0, 0A1h


msg3: db 04h, 86h, 0A1h; форма курсора


msg4: db 01h, 0A1h; параметр наложения


msg5: db 16h, 0A1h; включение/выключение дисплея


msg6: db 0B0h, 04h, 0A1h; установка курсора на графическую страницу


msg11: db' ', 01Ah


msg18: db 0, 01Ah; параметр прокрутки по горизонтали


END





Заключение

После выполнения работы была разработана цифрового осциллографа, придумана программа для МК.

В ходе проделанной работы были изучены:

–       принципы построения цифровых осциллографов

–       документация на выбранные микросхемы

–       принцип работы ЖКД

Цифровой осциллограф позволяёт наблюдать на ЖКД переменное напряжение любо частоты до 10 МГц. Также можно исследовать два сигнала одновременно.

Частота дискретизации и коэффициент ослабления\усиления сигнала задаются кнопками.

Для измерения постоянных напряжений можно трансформаторы заменить на операционные усилители или воспользоваться встроенными АЦП доработав программу для МК. Также можно добавить вывод текста на дисплей, показывающего количество вольт на деление и количество секунд на деление.
















Список использованных источников

 

1.     Б.П. Хромой, Ю.Г. Моисеев. Электрорадиоизмерения. Учебник для техникумов. – M: Издательство "Радио и связь", 1985г.

2.     ADG211- Документация. Режим доступа: [#"1.files/image041.jpg">

Рисунок 1 – Регулировка наклона и уровня

В нажатом состоянии ручки запуск развертки осуществляется по фронту, в вытянутом – по спаду. Регулятор LEVEL определяет точку на выбранном фронте, при пересечении которой запускается развертка.

Дле регулировки уровня подключим ко входу Ain0.0 потенциометр. Напряжение на Ain0.0 может меняться от 0 до 1 В. Ain0.0 подключим при программировании к 10 – ти разрядному ADC0.


Рисунок 2 – потенциометр для регулировки уровня

Для настройки АЦП0 загружаются регистры AMX0CF, AMX0SL, ADC0CF, ADC0CN значениями приведёнными в таблице 1.1.


Таблица 1.1 – Регистры для настройки и управления АЦП0

Название регистра

Значение

Описание

AMX0CF

xxxx0000

Регистр настройки AMUX0

AMX0SL

xxxx0000

Регистр выбора канала AMUX0

ADC0CF

11111000

Регистр конфигурации АЦП0

ADC0CN

10000000

Регистр управления АЦП0

ADC0H

11111111

Регистр старшего байта слова данных АЦП0

ADC0L

11111111

Регистр младшего байта слова данных АЦП0


В результате настройки Ain0.0 - Ain0.7 – независимые одиночные входы.

Выбран канал Ain0.0 мультиплексора.

Частота дискретизации вычисляется из формулы:

 ,

где - системная тактовая частота (100 МГц);

 - число, задаваемое битами 3 – 7 регистра ADC0CF.

Коэффициент усиления встроенного усилителя равен 1.

Более подробно опишем назначения битов регистра ADC0CN:

Бит 7: AD0EN: Бит включения АЦП0.

0: АЦП0 отключен. АЦП0 находится в режиме пониженного энергопотребления.

1: АЦП0 включен. АЦП0 находится в активном режиме и готов к преобразованию данных.

Бит 6: AD0TM: Бит установки режима слежения АЦП0.

0: Нормальный режим слежения: Когда АЦП0 включен, слежение осуществляется всегда, за исключением момента преобразования.

1: Энергосберегающий режим слежения: Режим слежения определяется битами AD0CM1-0 (см. ниже).

Бит 5: AD0INT: Флаг прерывания от АЦП0 (устанавливается при завершении преобразования).

Этот флаг должен быть сброшен программно.

0: АЦП0 не закончил преобразование данных (с момента последнего обнуления этого флага).

1: АЦП0 закончил преобразование данных.

Бит 4: AD0BUSY: Бит занятости АЦП0.

Чтение:

0: Преобразование данных завершено или в данный момент преобразование не осуществляется.

При аппаратном обнулении этого бита флаг AD2INT устанавливается в 1.

1: Идет процесс преобразования данных АЦП0.

Запись:

0: Не оказывает никакого влияния.

1: Инициирует запуск преобразования АЦП0, если биты AD2CM1-0 = 00b.

Биты 3-2: AD0CM1-0: Биты выбора режима запуска преобразования АЦП0.

Если AD2TM = 0:

00: Запуск преобразования осуществляется установкой в 1 бита AD2BUSY.

01: Запуск преобразования осуществляется при переполнении Таймера 3.

10: Запуск преобразования осуществляется нарастающим фронтом внешнего сигнала CNVSTR2.

11: Запуск преобразования осуществляется при переполнении Таймера 2.

Если AD2TM = 1:

00: слежение (выборка) начинается в момент установки в 1 бита AD2BUSY и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

01: слежение (выборка) начинается при переполнении Таймера 3 и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

10: слежение (выборка) происходит лишь при низком уровне сигнала на входе CNVSTR2; преобразование запускается нарастающим фронтом сигнала на входе CNVSTR2.

11: слежение (выборка) начинается при переполнении Таймера 2 и длится 3 периода сигнала дискретизации АЦП0; затем начинается преобразование данных.

Бит 1: AD2WINT: Флаг прерывания от детектора диапазона АЦП0 (сбрасывается программно)

0: Преобразованные данные не соответствуют заданному диапазону (с момента последнего обнуления этого флага).

1: Преобразованные данные соответствуют заданному диапазону

Бит 0: AD2LJST: Бит выравнивания результата преобразования

0: Данные в регистровой паре ADC0H:ADC0L выровнены вправо

1: Данные в регистровой паре ADC0H:ADC0L выровнены влево



 







Рисунок 3 – Блок – схема алгоритма подпрограммы InputADC1



Продолжение рисунка 3



Ниже приведены фрагмент текста программы для настройки АЦП (фрагмент нужно разместить после фрагмента для настройки прерываний):

;----------------------------------------------------------------

; Настройка АЦП0

;----------------------------------------------------------------

      mov SFRPAGE, #000h

      mov AMX0CF, #000h         

      mov AMX0SL, #000h  

      mov ADC0CF, #0F8h  

mov ADC0CN, #080h

  






Дальше приведён фрагмент текста программы подпрограммы InputADC1, который соответствует частоте дискретизации 500 КГц (для остальных частот аналогично):


;-----------------------------

;Частота дискретизации 500 КГц

;-----------------------------

_500KHz1:

      cjne kf1, #004h, _250KHz1


      ; Задание числа c которого считает таймер

      mov SFRPAGE, #001h

      mov RCAP3H,#0FFh

      mov RCAP3L,#05Ch

mov R4, #000h ;переменная synchronization

      mov DPTR, #000h  

Input1_4:

      mov SFRPAGE, #00Fh  ;3

      mov A, Padc1          ;2  

      movx @DPTR, A         ;3             

      inc DPTR        ;1   

       

      cjne R3,#000h, L0

      clr AD0INT

setb AD0BUSY ; запуск АЦП

      jz AD0INT,&

mov A, ADC0L

      mov R0, A


      clr C

      subb A,R0

      cjne A, #000h, Input1_4

mov R4, #001h


mov A, #0F0h          ;2   


L0:   mov SFRPAGE, #001h  ;3

      mov TMR3CN, #004h   ;3

     

       


      ;задержка 1690 нс


      jnb TMR3CN.7,$     ;4

      nop

      nop



      mov TMR3CN,#000h   ;3

      mov TMR3H,#0FFh ;3

      mov TMR3L,#05Ch ;3


      cjne A, DPL, Input1_4  ;5







Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.