⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串口通讯.a74

📁 一款RENESAS单片机实现串口通讯的实例。包含头文件
💻 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 + -