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