?? serial.asm
字號:
;;Established date: 2005/09/01
;;********************************************************************
;;transmit data from HT82M99E to RS232 device
SBR_USBToCOM:
SET F_TimerInterruptEnable
SNZ INTC.3
CLR F_TimerInterruptEnable
CLR INTC.3
MOV A,R_FIFOBAK0
MOV R_OutputReportDataSize,A
MOV A,OFFSET R_FIFOBAK1
MOV MP0,A
L_USBToCOM:
MOV R0,A
CALL SBR_TransmitToRS232Device
INC MP0
SDZ R_OutputReportDataSize
JMP L_USBToCOM
MOV A,0FFFH
MOV R_OutputReportDataSize,A
SZ F_TimerInterruptEnable
SET INTC.3
RET
;;********************************************************************
;;receive data from RS232 TO HT82M99E
ISR_Timer:
SZ F_Polling
JMP L_ReceiveFromRS232Device
SZ P_RXD
RETI
SZ P_RXD
RETI
MOV R_AccTimer,A
;mov a,02H ;;test code(test baudrate)
;xorm a,pa ;;
CLR TMR1C.4
CLR INTC.6
SET F_Polling
CLR INTC.1
MOV A,C_ReBaudRate9600L
MOV TMR1L,A
MOV A,C_ReBaudRate9600H
MOV TMR1H,A
MOV A,C_DataBits
MOV R_ReDataBits,A
MOV A,R_AccTimer
SET TMR1C.4
RETI
;;********************************************************************
SBR_TransmitToRS232Device:
MOV R_TransmitData,A
MOV A,C_DataBits
MOV R_TrDataBits,A
MOV A,11111011B
ANDM A,PB
CALL SBR_BaudRateDelay
L_TransmitToRS232DeviceLoop:
SDZ R_TrDataBits
JMP L_TransmitData
JMP L_TransmitStopBit
L_TransmitData:
RRC R_TransmitData
SNZ C
JMP L_Transmit0
L_Transmit1:
MOV A,00000100B
ORM A,PB
CALL SBR_BaudRateDelay
JMP L_TransmitToRS232DeviceLoop
L_Transmit0:
MOV A,11111011B
ANDM A,PB
CALL SBR_BaudRateDelay
JMP L_TransmitToRS232DeviceLoop
L_TransmitStopBit:
MOV A,00000100B
ORM A,PB
CALL SBR_BaudRateDelay
RET
;;********************************************************************
SBR_BaudRateDelay:
MOV A,R_TrBaudRateH
MOV R_TEMP2,A
MOV A,R_TrBaudRateL
L_BaudRateDelayLoop:
SUB A,7H
MOV R_TEMP1,A
SDZ R_TEMP1
JMP $-1
MOV A,0FFH
SDZ R_TEMP2
JMP L_BaudRateDelayLoop
RET
;;********************************************************************
L_ReceiveFromRS232Device:
MOV R_AccTimer,A
MOV A,STATUS
MOV R_StatusTimer,A
SDZ R_ReDataBits
JMP L_ReceiveData
; JMP L_ReceiveStopBit
L_ReceiveStopBit:
mov a,02h ;;test code(test baudrate)
xorm a,pa ;;
SET INTC.1
MOV A,MP0
MOV R_MP0Timer,A
MOV A,R_ReBufferAddress
MOV MP0,A
INC R_ReBufferAddress
MOV A,OFFSET R_ReceiveBuffer
ADD A,C_ReceiveBufferSize
SUB A,R_ReBufferAddress
SZ C
JMP L_WriteDataToBufferRe
MOV A,OFFSET R_ReceiveBuffer
MOV R_ReBufferAddress,A
MOV A,01H
ORM A,PA
L_WriteDataToBufferRe:
MOV A,R_ReceiveData
MOV R0,A
CLR F_Polling
CLR TMR1C.4
CLR INTC.6
MOV A,C_PollingL
MOV TMR1L,A
MOV A,C_PollingH
MOV TMR1H,A
MOV A,R_MP0Timer
MOV MP0,A
MOV A,R_StatusTimer
MOV STATUS,A
MOV A,R_AccTimer
SET TMR1C.4
RETI
L_ReceiveData:
CLR C
SZ P_RXD
SET C
RRC R_ReceiveData
;mov a,02h ;;test code(test baudrate)
;xorm a,pa ;;
MOV A,R_StatusTimer
MOV STATUS,A
MOV A,R_AccTimer
RETI
;;********************************************************************
SBR_AddBufferAddress:
INC MP0
MOV A,MP0
AND A,7FH
MOV R_TrBufferAddress,A
MOV A,OFFSET R_ReceiveBuffer
ADD A,C_ReceiveBufferSize
SUB A,R_TrBufferAddress
MOV A,OFFSET R_ReceiveBuffer
SZ C
MOV A,R_TrBufferAddress
MOV R_TrBufferAddress,A
MOV MP0,A
RET
;;********************************************************************
SBR_ClearFIFOBAK:
CLR R_FIFOBAK0
CLR R_FIFOBAK1
CLR R_FIFOBAK2
CLR R_FIFOBAK3
CLR R_FIFOBAK4
CLR R_FIFOBAK5
CLR R_FIFOBAK6
CLR R_FIFOBAK7
RET
;;********************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -