Раздел: Документация
0 ... 20 21 22 23 24 25 26 ... 55 Алгоритм вывода байта OUTBYTE .macro jb RxD,$ mov sbuf,a jnb RxD,$ jnb ti,$ clr ti . endm ,-Waiting enable transfer ;Output byte in buffer ,-Waiting disable transfer.WARNING! ! : ,-Waiting output last bit (flag ti) ;Clear flag ti .DATA Переменные
Умножитель частоты для работы процессора .CODE .org OOOOh ;Вектор прерывания по RST jmp MAIN .org 0003h ;Вектор прерывания по INTO reti .org OOlbh ;Вектор прерывания no TF1 reti .org 0053h ,-вектор прерывания от TIC reti Основная программа .org 0060h mov sp,#20h mov PASEL,#2Oh MAIN: ; mov PLLCON,#0h ,-(11059200 Гц при кварце 28800 Гц в ADUC816). ; clr рЗ .5 ,-ON Инициал. поел. порта mov SCON,#11101100b 8 бит,2 стопа,REN=0(запрет приема ReciveENable=0) ; TI=0,RI=0,Vo6m определяется Т1 или Т2, SM1=SM2=1 режим 3. RB8=TB8=1. Инициализация таймера Т2 - как таймера. mov T2CON, #00110100Ь,- TF2 = 0, EXF2 = 0, RCLK=1, TCLK=1, EXEN2 = 0, ; TR2=l-start,CNT2=0,CAP2=0. mov RCAP2H,#0ffh mov RCAP2L,#-3 ,-mov RCAP2L,#-1 ;mov RCAP2L,#-2 ,-mov RCAP2L,#-3 6 ;mov RCAP2L,#-12 ;Fo6M.=Freq/(3 2*(65536-(RCAP2H,RCAP2L))) ,-65536-RCAP2H,RCAP2L=65536-65533 = 3 (2 53 = fch) ;Fo6m.=11059200/(32*3)=115200 бод. ;Fo6m.= 3686400/(32*1)=115200 бод. ;Fo6m.= 7372800/(32*2)=115200 бод. ;6 553 6-RCAP2H,RCAP2L=6553 6-(65536,(256-36))=3 6 ,-Fo6m. = 11059200/ (32*3 6)=9600 бод. ;Fo6m.= 3686400/(32*12)=9600 бод. mov PCON,#8Oh mov CKCON,#2Oh mov USEC,#10 mov PDCON,#ldh ;mov ACLK,#1 ;mov PASEL,#2 0h ы Ввод байт по поел, порту setb REN .Разрешение приема. mov dptr,#0 INBYTE mov г0,a ; Мл. байт длины INBYTE mov rl,a ; Ст. байт длины INBYTE; Байт в а push а inc dptr mov а,rl cjne a,dph,spin mov a,rO cjne a,dpi,spin Вывод байт no поел, порту clr REN;Запрет приема, spout:pop a OUTBYTE djnz rO,spout Ввод команды продолжения работы setb REN;Разрешение приема. IB:INBYTE cjne a,#40h,E jmp START START: spin: E: mov 0f2h,#0 jmp $ . end 0 ... 20 21 22 23 24 25 26 ... 55
|