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

📄 multibyte_send.txt

📁 PIC单片机16f628A串口发送接收程序.汇编语言编写
💻 TXT
字号:
STATUS 	EQU 03H  ; 定义状态寄存器地址
PORTA   EQU 05H 
PORTB 	EQU 06H  ;端口B的数据寄存器地址
TRISA   EQU 5H
TRISB 	EQU 6H   ;定义端口B的方向控制寄存器地址
CMCON   EQU 1FH
SPBRG 	EQU 19H
TXSTA 	EQU 18H
RCSTA 	EQU 18H
TXREG 	EQU 19H
RCREG 	EQU 1AH
PIR1  	EQU 0CH
dataL 	EQU 20H
DATA1   EQU 21H
PIE1    EQU 0CH
INTCON  EQU 0BH
FSR     EQU 04H
INDF    EQU 00H

;----------------------  
RP0     EQU 5  ;定义状态寄存器中的RAM页选位RP0
RP1     EQU 6
RCIF    EQU 5
TRMT    EQU 1
KEY1 	EQU 6
KEY2 	EQU 7

IRP     EQU 7
RCIE    EQU 5
PEIE    EQU 6
GIE     EQU 7
TXIE    EQU 4
TXIF    EQU 4
    	ORG    0x000            ; Program starts at 0x000 
; ---------------- 
; INITIALIZE PORTS
; ---------------- 
;
	GOTO      MAIN                                   ;跳转到初始化程序
        ORG       0X0004                                 ;中断矢量
        
        BCF   STATUS,RP0
        BTFSS  PIR1,RCIF
        GOTO  TX_INT
   RC_INT
        NOP
        MOVF  RCREG,W
        MOVWF  INDF
        INCF FSR
        
        NOP
   TX_INT
        BSF  STATUS,RP0
        BTFSS  PIE1,TXIE
        GOTO  INT_END
        BCF   STATUS,RP0
        BTFSS PIR1,TXIF
        GOTO  INT_END
        
        MOVLW  05H
        MOVWF  TXREG
 
        bsf STATUS,RP0	    ; RAM PAGE 1
WAIT_SEND  btfss TXSTA,TRMT    ; (1) transmission is complete if hi
        goto WAIT_SEND
        BSF   STATUS,RP0     ; close  send int
         BCF     PIE1,TXIE   
        
        bcf STATUS,RP0      ; RAM PAGE 0
       
INT_END
    RETFIE                                            
		
MAIN	movlw 	7
	movwf 	CMCON			; CMCON=7 set comperators off 
  INITA 
	BCF  STATUS,RP0 
	BCF  STATUS,RP1

        bsf 	STATUS,RP0      	; RAM PAGE 1
        movlw 	b'11110010'	; RB7-RB4 and RB1(RX)=input, others output 
        movwf 	TRISB	

        

; ------------------------------------
; SET BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;       BSF   STATUS,RP0
        movlw 	0x19          ; 0x19=9600 bps (0x0C=19200 bps)
        movwf 	SPBRG
        movlw 	b'00100100'   ; brgh = high (2)
        movwf 	TXSTA         ; enable Async Transmission, set brgh
        
        
        BSF  PIE1,RCIE   ; open receive  int  
        BCF  PIE1,TXIE
        
        
        BCF   STATUS,RP0
        MOVLW  B'10010000' ;打开串口,连续接收
        movwf 	RCSTA       
        BCF    PIR1,RCIF
             
        CLRF  INTCON
	BSF     INTCON,GIE                             ;使能全局中断使能位
	BSF     INTCON,PEIE                            ;使能外设中断使能位
 
         BCF   STATUS,RP0
         
        BCF STATUS,IRP 
       MOVLW  0B0H
       MOVWF  FSR
       
        MOVLW  99H
        CALL   SEND
    ;    CALL  DLY10MS 
        MOVLW  88H
        CALL  SEND
     ;   CALL  DLY10MS
        MOVLW  77H
        CALL  SEND
      ; CALL  DLY10MS
        MOVLW  66H
        CALL  SEND
      ;  CALL  DLY10MS
        MOVLW  55H
        CALL  SEND
      ;  CALL  DLY10MS
    LOOP
        NOP
        GOTO LOOP


SEND
     MOVWF  TXREG  
     bsf STATUS,RP0	    ; RAM PAGE 1
TEST  btfss TXSTA,TRMT    ; (1) transmission is complete if hi
        goto  TEST
        BCF   STATUS,RP0     ; close  send int
     RETURN
     
DLY10MS  MOVLW  05H             ;不是10MS
         MOVWF  63H             ;(254*3+2+3+2)*4+2=3078
DLY10MS1 MOVLW  0FFH
         MOVWF  64H
DLY10MS2 DECFSZ 64H
         GOTO   DLY10MS2
         DECFSZ 63H
         GOTO   DLY10MS1
         RETLW   00H         
             
 END    
    
    
        


        


  		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -