📄 串口通讯.a74
字号:
;------------------------------------
;-------------4.9152HZ---------------
;------------------------------------
;---------2007-1-5 14:55-------------
;---------M37544---------------------
;------------------------------------
;-----------------------------------------------------
; M37540 ROM=(E080H-FFFDH) ; RAM=(040H-13FH) 256
;-----------------------------------------------------
.include M37540_sfr.h
.include eeprom.H
;---------P 0-----------; P0D 1011 1111
BFANOUT .EQU 7,P0 ; START 0100 1111
BKEYIN .EQU 6,P0 ; PULL 0000 0000
TYPEIN3 .EQU 5,P0 ; P1P3C 0000 0000
BJD .EQU 4,P0 ; INTEDGE 0000 0000
BJC .EQU 3,P0
BJB .EQU 2,P0
BUZ .EQU 1,P0
BJA .EQU 0,P0
;---------P 1-----------; P1D 0000 0010
BFANIN .EQU 4,P1 ; START 0001 1101
TYPEIN2 .EQU 3,P1
TYPEIN1 .EQU 2,P1
BTXD .EQU 1,P1
BRXD .EQU 0,P1
;---------P 2-----------; P2D 0011 1100
BYJ .EQU 5,P2 ; START 0000 0011
BDH .EQU 4,P2
BHXF .EQU 3,P2
WPGIN .EQU 2,P2 ;改A/D
PGIN .EQU 1,P2
RMIN .EQU 0,P2
;---------P 3-----------; P3D 0001 1111
BZEROIN .EQU 7,P3 ; START 1001 1100
BSTB .EQU 4,P3
BLEDY .EQU 4,P3
BCLK .EQU 3,P3
BLEDP .EQU 3,P3
BDA .EQU 2,P3 ;2668
BLEDR .EQU 2,P3
BSCL .EQU 1,P3
BSDA .EQU 0,P3 ;EEPROM
;--------RAM Assignment-------
.SECTION Z
.ORG 0040H
;****************************************
DRST1: .BLKB 1
ADDD: .BLKB 1
;-------------
ABUFF: .BLKB 1
BBUFF: .BLKB 1
CBUFF: .BLKB 1
DBUFF: .BLKB 1
;------------
RBUFF_1: .BLKB 1
RBUFF_2: .BLKB 1
RBUFF_3: .BLKB 1
RBUFF_4: .BLKB 1
RBUFF_5: .BLKB 1
RBUFF_6: .BLKB 1
RBUFF_7: .BLKB 1
RBUFF_8: .BLKB 1
RBUFF_9: .BLKB 1
RBUFF_10: .BLKB 1
RBUFF_11: .BLKB 1
RBUFF_12: .BLKB 1
RBUFF_13: .BLKB 1
RBUFF_14: .BLKB 1
RBUFF_15: .BLKB 1
RBUFF_16: .BLKB 1
;------------
WBUFF_1: .BLKB 1
WBUFF_2: .BLKB 1
WBUFF_3: .BLKB 1
WBUFF_4: .BLKB 1
WBUFF_5: .BLKB 1
WBUFF_6: .BLKB 1
WBUFF_7: .BLKB 1
WBUFF_8: .BLKB 1
WBUFF_9: .BLKB 1
WBUFF_10: .BLKB 1
WBUFF_11: .BLKB 1
WBUFF_12: .BLKB 1
WBUFF_13: .BLKB 1
WBUFF_14: .BLKB 1
;------------
T4MS: .BLKB 1
T1S: .BLKB 1
;------------
BIT_BUFF1: .BLKB 1
BERR1 .EQU 0,BIT_BUFF1
BERR2 .EQU 1,BIT_BUFF1
;
BIT_BUFF2: .BLKB 1
BSIOR .EQU 0,BIT_BUFF2
BSIOW .EQU 1,BIT_BUFF2
READ_OK .EQU 2,BIT_BUFF2
BIT_BUFF3: .BLKB 1
B1S .EQU 0,BIT_BUFF3
;------------
DRST2: .BLKB 1
;****************************************************
.SECTION P ; Program start area
.ORG 0E080H
START: NOP
NOP
NOP
LDM #0,DRST1
ERROR: SEI
CLT
CLD
LDM #10000100B,CPUM
LDX #03FH ; stack pointer initialize (13fh)
TXS
LDM #11001100B,CPUM
LDM #00000000B,IREQ1
LDM #00000000B,IREQ2
LDM #10000011B,MISRG
LDM #00000000B,PULL
LDM #00000000B,P1P3C
LDM #00000000B,INTEDGE
LDM #01100000B,P0
LDM #00011101B,P1
LDM #00000111B,P2
LDM #10011111B,P3
JSR WORK3
;--------------
SET_TA: CLB 2,ICON2 ;Timer A interrupt disabled (16-bit timer)
LDM #10000000B,TAM
LDM #00000001B,TCSS2; (1/4.91)*2*0347H = 400US
LDM #047H,TAL
LDM #03H,TAH ;
;-------------
SET_SIO: CLB 4,SIOCON
CLB 5,SIOCON
CLB 0,ICON1
CLB 1,ICON1
LDM #10100001B,SIOCON ;选择异步串行I/O f/4
LDM #00000010B,UARTCON ;//奇偶效验,1停止位,字节长8位
LDM #63,BRG ;//300 bps
;------------
SET_INT0: LDM #80H,INTEDGE
CLB 7,TAM
;------------
LDM #00000100B,ICON2;EnableTimer_A interrupt
LDM #00000000B,ICON1;
;------------
BEG: LDA DRST1
CMP #055H
BNE RAM_CLR
LDA DRST2
CMP #05AH
BNE RAM_CLR
CLI
JMP MAIN
;-----------------------------
RAM_CLR:
LDX #0BFH ; Clear 40H -> 0FFH RAM
LDA #0
CLEAR:
CPX #0FFH
BEQ INIP
STA DRST1,X
DEX
BRA CLEAR
INIP:
LDX #ASASA-RAD112H ; CLEAR 100H-13FH
CLEAR1: CPX #0FFH
BEQ INIP1
STA RAD112H,X
DEX
BRA CLEAR1
;---------------------------------------------------------------------
INIP1: CLI
;------------------------------
LDM #55H,DRST1
LDM #0AAH,DRST2
LDM #05AH,0FFH
LDM #1,ABUFF
MAIN: JSR WORK2
JSR SIO_READ
JSR CTRL
JSR SIO_WR
JMP MAIN
;************************************************************
CTRL:
BBC BSIOR,CTRL1
CLB BSIOR
LDA RBUFF_1
CMP #0AAH
BEQ CTRL_DATA
CTRL1: SEB BERR2
END_1: RTS
CTRL_DATA:
; LDY #0
;CTRL_S: CPY #189
; BCS CTRL_DATA0
; LDA #0
; STA 41H,Y
; INY
; BRA CTRL_S
;CTRL_DATA0:
LDM #0FFH,41H
LDM #39H,42H
LDM #98H,43H
; LDM #0F1H,44H
CLB BERR2
RAM_ADD: LDY #0
STY 0FEH
RAM_ADD1: CPY #190
BCS RAM_ADD3
RAM_ADD2: LDA 40H,Y
CLC
ADC 0FEH
STA 0FEH
INY
BRA RAM_ADD1
RAM_ADD3: SEB READ_OK
END_3: RTS
;************************************************************
SIO_WR: BBC B1S,END_2
CLB B1S
BBC READ_OK,END_3
CLB READ_OK
SEI
SEB 7,TAM ; stop TC1.TC0 counter
BBS BERR2,SIO_ERR
LDM #055H,40H ;//起始单元
LDM #05AH,0FFH ;//结束单元
JSR ADD
LDX #0
NOP
SIO_WR1: LDA 40H,X
STA TB
SEB 4,SIOCON
SIO_WR2: BBC 0,SIOSTS,SIO_WR2
NOP
SIO_WR3: BBC 2,SIOSTS,SIO_WR3
INX
CPX #192 ;//发送040H-OFFH
BCC SIO_WR1
BRA SIO_WR4
SIO_ERR: CLB 4,SIOCON
SIO_WR4: LDA #047H
LDY #01H
STA TAL
STY TAH
CLB 7,TAM ; clear and start tc1.tc0
CLI
END_2: RTS
;************************************************************
SIO_READ:
SEB 5,SIOCON ;//允许接收
LDX #0
NOP
SIO_READ1:BBC 1,SIOSTS, SIO_READ1
LDA TB
STA RBUFF_1,X
; BBS 6,SIOSTS,READ_ERR
CLB BERR1
INX
; CPX ABUFF
; BCC SIO_READ1
SEB BSIOR
BRA SIO_READ2
READ_ERR: SEB BERR1
LDA #0
STA RBUFF_1,X
CLB 5,SIOCON
SIO_READ2:RTS
;************************************************************
ADD: LDY #0
STY 0FEH
ADD1: CPY #189
BCS SIO_READ2
LDA 40H,Y
CLC
ADC 0FEH
STA 0FEH
INY
BRA ADD1
;************************************************************
WORK2: LDM #11000100B,CPUM
WORK3: LDM #10011111B,P0D
LDM #00000010B,P1D
LDM #00111000B,P2D
LDM #00011111B,P3D
RTS
;*************************************************************
TIMER_A: PHA
INC T4MS
LDA T4MS
CMP #10
BCC TIMER_A9
LDM #00H,T4MS
INC T1S
LDA T1S
CMP #25
BCC TIMER_A9
LDM #00H,T1S
SEB B1S
; LDA #047H
; LDY #03H
; STA TAL
; STY TAH
; CLB 7,TAM ; clear and start tc1.tc0
TIMER_A9: PLA
BITD: RTI
;*************************************************************
INITDATA: .BYTE 32H,33H,34H,35H,36H,37H,38H,39H,40H,41H,42H,43H
;*************************************************************
.ORG 0FFE0H
.WORD BITD
.ORG 0FFE2H
.WORD BITD
.ORG 0FFE6H
.WORD TIMER_A
.ORG 0FFECH
.WORD BITD
.ORG 0FFEEH
.WORD BITD
.ORG 0FFF0H
.WORD BITD
.ORG 0FFF2H
.WORD BITD
.ORG 0FFF4H
.WORD BITD
.ORG 0FFF6H
.WORD BITD
.ORG 0FFF8H
.WORD BITD
.ORG 0FFFAH
.WORD BITD
.ORG 0FFFCH
.WORD START
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -