Hello Ivan.
Wed Jun 08 2005 23:00, Ivan Melnikov wrote to All:
IM> óÁÂÖ ÐÒÏÛÉ×ÁÔØ ÎÁÕÞÉÌÓÑ, ÔÏÌØËÏ ×ÏÔ ÎÉËÁË ÎÅ ÈÏÞÅÔ ÐÏ UART'Õ ÒÁÂÏÔÁÔØ. IM> ÷ÏÔ ÔÁË Ñ ÎÁÞÁÌØÎÕÀ ÉÎÉÃÉÁÌÉÚÁÃÉÀ ÐÒÏÉÚ×ÏÖÕ:
÷ÏÔ ÔÅÂÅ ÍÏÑ ÉÎÉÃÉÁÌÉÚÁÃÉÑ, ÐÏÐÒÁר ÞÔÏ ÎÕÖÎÏ, ×ÙËÉÎØ ÞÔÏ ÎÅ ÎÕÖÎÏ - ÄÏÌÖÎÏ ÒÁÂÏÔÁÔØ. :) èÏÔÑ Ñ ÓÅÊÞÁÓ ÏÂÒÁÔÉÌ ×ÎÉÍÁÎÉÅ, ÞÔÏ Õ ÔÅÂÑ ED2 - Ñ ÔÁËÏÇÏ ËÒÉÓÔÁÌÌÁ ÎÅ ÚÎÁÀ, ÒÁÂÏÔÁÌ ÔÏÌØËÏ Ó RD2, ÉÚÕÞÁÌ RB2/RC2/RD2.
Reset: mov SP,#STKPTR ;ÚÁÇÒÕÚËÁ ÕËÁÚÁÔÅÌÑ ÓÔÅËÁ
; M0 EXTRAM ; ; XS1 ;AUXR.5=M0 ext. XRAM timing ; ; mov AUXR,#00001100b ;AUXR.3=XRS1 internal XRAM size ; ;AUXR.2=XRS0 0=256..3=1024 ; XS0 ;AUXR.1=EXTRAM external XRAM enable ; AO ;AUXR.0=AO ALE output
; PCAX T0X ;CKCON.6=WDX2 WD x2 off ; T2X ;CKCON.5=PCAX2 PCA x2 off ; ;CKCON.4=SIX2 UART x2 off mov CKCON,#01010111b ;CKCON.3=T2X2 T2 x2 off ; ;CKCON.2=T1X2 T1 x2 off ; WDXT1X ;CKCON.1=T0X2 T0 x2 off ; SIX X2 ;CKCON.0=X2 X2 mode ON
clr a ;ÏÞÉÓÔËÁ ïúõ mov r0,#0 DO mov @r0,a LOOP djnz,r0
;ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÔÁÊÍÅÒÏ× 0 É 1
mov TMOD,#22h ;ÒÅÖÉÍ 2 - Á×ÔÏÚÁÇÒÕÚËÁ mov TH0,#RLD_E mov TH1,#RLD_E
;ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÐÒÅÒÙ×ÁÎÉÊ ; ;IE.7=EA ïÂÝÅÅ ÒÁÚÒÅÛÅÎÉÅ ÐÒÅÒÙ×ÁÎÉÊ ; ET2 ET0 ;IE.6=EC ðÒÅÒÙ×ÁÎÉÅ ÏÔ PCA ; EA ET1 ;IE.5=ET2 ... ÏÔ ÔÁÊÍÅÒÁ 2 (8052) ; ;IE.4=ES ... ÏÔ UART mov IE,#11101010b ;IE.3=ET1 ... ÏÔ ÔÁÊÍÅÒÁ 1 ; ;IE.2=EX1 ... ÏÔ INT1 ; ES EX0 ;IE.1=ET0 ... ÏÔ ÔÁÊÍÅÒÁ 0 ; EC EX1 ;IE.0=EX0 ... ÏÔ INT0 ;
; TF0 IE0 ;TCON.7=TF1 ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ ÔÁÊÍÅÒÁ 1 ; TF1IE1 ;TCON.6=TR1 ÚÁÐÕÓË ÔÁÊÍÅÒÁ 1 ; ;TCON.5=TF0 ÆÌÁÇ ÐÒÅÒÙ×ÁÎÉÑ ÔÁÊÍÅÒÁ 0 mov TCON,#01010101b ;TCON.4=TR0 ÚÁÐÕÓË ÔÁÊÍÅÒÁ 0 ; ;TCON.3=IE1 ÂÙÌ ÐÁÄÁÀÝÉÊ ÆÒÏÎÔ ÎÁ INT1 ; TR0IT0 ;TCON.2=IT1 ÐÒÅÒÙ×ÁÎÉÅ ÐÏ ÆÒÏÎÔÕ ÎÁ INT1 ; TR1 IT1 ;TCON.1=IE0 ... ÎÁ INT0 ; ;TCON.0=IT0 ... ÎÁ INT0
mov RCAP2H, # > RLD_U ;ÚÎÁÞÅÎÉÅ Á×ÔÏ-ÐÅÒÅÚÁÇÒÕÚËÉ ÔÁÊÍÅÒÁ 2 mov RCAP2L, # < RLD_U ; (ÄÅÌÉÔÅÌØ ÄÌÑ UART)
; RCLK C/T2 ;T2CON.7=TF2 ÐÅÒÅÐÏÌÎÅÎÉÅ ÔÁÊÍÅÒÁ 2 ; TF2XN2 ;T2CON.6=EXF2 ÐÅÒÅÐÏÌÎÅÎÉÅ ÏÔ ×ÎÅÛ. ÓÉÇÎÁÌÁ ; ;T2CON.5=RCLK ÐÒÉÅÍÎÉË UART - ÏÔ ÔÁÊÍÅÒÁ 2 mov T2CON,#00110100b ;T2CON.4=TCLK ÐÅÒÅÄÁÔÞÉË UART --- ; ;T2CON.3=EXEN2 ÒÁÚÒÅÛÅÎÉÅ ÒÅÁËÃÉÉ ÎÁ T2EX ; TCKCP/RL2;T2CON.2=TR2 ÚÁÐÕÓË ÔÁÊÍÅÒÁ 2 ; EXF2 TR2 ;T2CON.1=C/T2 1: ÓÞÅÔÞÉË, 0: ÔÁÊÍÅÒ ; ;T2CON.0=CP/RL2 1: capture, 0: reload
; õÓÔÁÎÁ×ÌÉ×ÁÅÍ ÐÒÉÏÒÉÔÅÔÙ ÐÒÅÒÙ×ÁÎÉÊ
;ðòéïòéôåô ðòåòù÷áHéñ (IP:LOW BYTE IPH: HIGH) ; PT2 PT0 ; PT1 ;IP.6=PPC ... PCA ; ;IP.5=PT2 ... ÔÁÊÍÅÒÁ 2 (8052) mov IPH,#00000000b ;IP.4=PS ... RS-232 mov IP,#00001111b ;IP.3=PT1 ... ÔÁÊÍÅÒÁ 1 ; ;IP.2=PX1 ... INT1 ; PS PX0 ;IP.1=PT0 ... ÔÁÊÍÅÒÁ 0 ; PPC PX1 ;IP.0=PX0 ... INT0
; CPS0 ; ;CMOD.2=CPS1 00 CPer/6 01 CPer/2 mov CMOD, #00000001b ;CMOD.1=CPS0 10 T0 OVR 11 P1.2 pin ; ;CMOD.0 Enable INT ; ECF ; CPS1
; CR ;CCON.7=CF PCA FLAG ; ;CCON.6=CR PCA RUN mov CCON, #01000000b ; ; ;CCON.0..CCON.4 -> CCF0..CCF4 ; CF
mov WDTPRG,#7
mov DPTR,#0 ;ÏÞÉÓÔËÁ XRAM DO clr a movx @DPTR,a inc DPTR mov a,DPH LOOP ne,a,#>XEND
call InitRS ;éÎÉÃÉÁÌÉÚÁÃÉÑ ×ÓÔÒÏÅÎÎÏÇÏ UART
setb EA
... >>> ÐÅÒÅÈÏÄÉÍ Ë ÇÌÁ×ÎÏÍÕ ÃÉËÌÕ
; ÐÏÄÐÒÏÇÒÁÍÍÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ UART
InitRS:
; ; SM2 TI SCON.7 SM0 €ƒ ; SM0TB8 SCON.6 SM1 €Š€ ÒÅÖÉÍ (ÂÉÔ 7 - ÍÌÁÄÛÉÊ) ; SCON.5 SM2 €… SCON_INIT0 equ 01011110b ; SCON.4 REN ÒÁÚÒÅÛÅÎÉÅ ÐÒÉÅÍÁ ; SCON.3 TB8 toTransmit Bit 8 ; SM1RB8 SCON.2 RB8 Received Bit 8 ; REN RI SCON.1 TI ÆÌÁÇ ÏËÏÎÞÁÎÉÑ ÐÅÒÅÄÁÞÉ ; SCON.0 RI ÆÌÁÇ ÐÒÉÎÑÔÏÇÏ ÂÁÊÔÁ
orl PCON,#80h ;Double rate mov SCON,#SCON_INIT0
mov a,SBUF ;ÏÞÉÓÔËÁ ÐÒÉÅÍÎÉËÁ
ret
bit7 equ 10000000b bit6 equ 01000000b bit5 equ 00100000b bit4 equ 00010000b bit3 equ 00001000b bit2 equ 00000100b bit1 equ 00000010b bit0 equ 00000001b
AUXR reg 08Eh mAO equ bit0 ;ALE output 0 STD 1 BLOCK mEXTRAM equ bit1 ;access internal XRAM = 0 mXRS0 equ bit2 ;XRAM size (11 = 1024) mXRS1 equ bit3 mM0 equ bit5 ;1: stretch external RAM RD/WR timing
AUXR1 reg 0A2h ;note: INC AUXR1 correctly swaps DPTR0/DPTR1 mDPS equ bit0 ;select DPTR mENBOOT equ bit5 ;1: enable boot rom
CKCON reg 08Fh ;Clock control mX2 equ bit0 ;X2 mode=1 mT0X2 equ bit1 ;Timer 0 -- X2 OFF = 1 mT1X2 equ bit2 ;Timer 1 mT2X2 equ bit3 ;Timer 2 mSIX2 equ bit4 ;UART mPCAX2 equ bit5 ;PCA mWDX2 equ bit6 ;Watchdog
WDTRST equ 0A6h ;WDT Reset : to run/reset WDT write 01E 0E1 ; (at 12 MHz): WDTPRG equ 0A7h ;0 1 2 3 4 5 6 7 ;16ms 32ms 65ms 131 262 542 1s 2s
IPL equ 0B8h ;lower priority bits
iPX0 reg IPL.0 ;eXternal 0 (REG for direct bit access) iPT0 reg IPL.1 ;Timer 0 iPX1 reg IPL.2 ;eXternal 1 iPT1 reg IPL.3 ;Timer 1 iPS reg IPL.4 ;Serial iPT2 reg IPL.5 ;Timer2 iPPC reg IPL.6 ;PCA
IPH equ 0B7h ;higher priority bits
mPX0 equ bit0 ;eXternal 0 mPT0 equ bit1 ;Timer 0 mPX1 equ bit2 ;eXternal 1 mPT1 equ bit3 ;Timer 1 mPS equ bit4 ;Serial mPT2 equ bit5 ;Timer2 mPPC equ bit6 ;PCA
PCL equ 0E9h ;PCA counter LOW PCH equ 0F9h ;PCA counter HIGH
CMOD equ 0D9h ;PCA counter mode
mECF equ bit0 ;enable counter overflow INT mCPS0 equ bit1 ; 0 CPeri/6 1 CPeri/2 mCPS1 equ bit2 ;10 T0 OVR 11 P1.2 pin mWDTE equ bit6 ;PCA WDT enable mCIDL equ bit7 ;counter idle control
CCON reg 0D8h
iCR reg CCON.6 ;start PCA counter iCF reg CCON.7 ;PCA overflow/int
EECON reg 0D2h ;RD2 ONLY! EEPROM control register
mEEBUSY equ bit0 ;EEPROM busy mEEE equ bit1 ;EE space mapping
EETIM reg 0D3h ;RD2 ONLY! EEPROM timer register
FCON reg 0D1h ;FLASH programming register
mFBUSY equ bit0 ;FLASH busy mFPS equ bit3 ;FLASH space mapping
Dimmy.