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

📄 dr0.asm

📁 C32中C语言中嵌入汇编程序示例.包括中断程序中调用C参数
💻 ASM
字号:
;*****************************************************************************
;  Function:	  Seria0_DR0.asm         
;  Version :	 1.00
;  Description:  Seria0_DR0
;
;  Copyright Texas instruments Inc, 2000

;*****************************************************************************
.mmregs  
  
        .data
SPORT  .word 808040h	   ;Serial-port 0 global control
SPRESET .word   00c2H    ;Serial-port 0 global control  复位控制字       
						   ;FSXOUT = 1 configures the FSX pin as an output.
						   ;HS = 0, the handshake mode is disabled.
						   ;XCLK SRCE = 1, the internal transmit clock is used.
						   ;RCLK SRCE = 1, the internal receive clock is used.
						   ;XVAREN,RVAREN 忽略,Reset Value=00
						   ;XFSM,RFSM  忽略,Reset Value=00   
						   ;CLKXP = 0, CLKX is active high.
						   ;CLKRP = 0, CLKR is active (high).
						   ;DXP = 0, DX is active (high).
						   ;DRP = 0, DR is active (high).
						   ;FSXP = 0, FSX is active (high).
						   ;FSRP = 0, FSR is active (high).
						   ;XLEN  忽略,Reset Value=00  
						   ;RLEN  忽略,Reset Value=00 
						   ;XTINT = 0, the transmit timer interrupt is disabled.
						   ;XINT = 0, the transmit interrupt is disabled. 
						   ;RTINT = 0, the receive timer interrupt is disabled.
						   ;RINT = 0, the receive interrupt is disabled.
						  ;XRESET = 0, the transmit side of the serial port is reset.
						  ;RRESET = 0, the receive side of the serial port is reset.
SXCTRL0    .word       0222H
		;CLKX FUNC = 0, CLKX is configured as a general-purpose
		;CLKX I/O = 1, CLKX is configured as a general-purpose output
		;CLKX DATOUT=0 Data output on CLKX when configured as general-purpose output.
		
		;DXFUNC = 0, DX is configured as a general-purpose digital I/O port.
		;DX I/O = 1, DX is configured as a general-purpose output pin.
		;DX DATOUT=0,Data output on DX when configured as general-purpose output. 
		
		;FSX FUNC = 0, FSX is configured as a general-purpose digital
		;FSX I/O = 1, FSX is configured as a general-purpose output
		;FSX DATOUT=0  Data output on FSX when configured as general-purpose output.
SXCTRL1   .word      0666H
        ;CLKX DATOUT=1 DX DATOUT=1  FSX DATOUT=1 

SRCTRL0   .word       0222H
		;CLKR FUNC = 0, CLKR is configured as a general-purpose
		;CLKR I/O = 1, CLKR is configured as a general-purpose output
		;CLKR DATOUT=0  Data output on CLKR when configured as general-purpose
				
		;DR FUNC = 0, DR is configured as a general-purpose digital
		;DR I/O = 1, DR is configured as a general-purpose output pin
		;DR DATOUT=0  Data output on DR when configured as general-purpose output.
		
		;FSR FUNC = 0, FSR is configured as a general-purpose digital
		;FSR I/O = 0, FSR is configured as a general-purpose input
		;FSR DATOUT=0  Data output on FSR when configured as general-purpose output.
SRCTRL1   .word       0666H
		;CLKR DATOUT=1	DR DATOUT=1   FSR DATOUT=1

STCTRL    .word       0000H
		;XGO=0  has no effect on the transmit timer. 	
		;XHLD = 0, the counter is disabled and held in its current state.	  			  
		;XC/P Transmit clock/pulse mode control忽略,Reset Value=0  
		;RGO RHLD  RC/P 同上   
STimerCounter   .word 0000H
STPERIOD	.word 0000H	
;*****************************************************************************
        .def	_DR0      
 
	.text   

_DR0:	
		;PUSH FP       ;保护旧FP
		;LDI SP,FP     ;设置新FP
		;ADDI 2,SP     ;分配局部帧
		PUSH ST       ;保护ST
		PUSH R0       ;保护R0的低32位
		PUSHF R0      ;保护R0的高32位
        PUSH R1       ;保护R1的低32位  
        PUSHF R1	  ;保护R1的高32位   
		PUSH R2       ;保护R2的低32位
		PUSHF R2      ;保护R2的高32位
        PUSH R3       ;保护R3的低32位  
        PUSHF R3	  ;保护R3的高32位
        PUSH R6       ;保护R6的低32位  
        PUSHF R6	  ;保护R6的高32位           
		PUSH AR0      ;
		PUSH AR1      ;
		PUSH AR2      ;
		PUSH AR3      ;
		PUSH AR4      ;		          
        ;以上为保护寄存器
;********************************************************        
		LDI @SPORT,AR1
		LDI @SPRESET,R0
		STI R0,*AR1     ;   Serial-port 0 global control  复位控制字     
		
		;LDI @SXCTRL0,R0 ;
		;STI R0,*+AR1(2) ; CLKX DATOUT=0 DX DATOUT=0 FSX DATOUT=0

		;LDI @SXCTRL1,R0 ;
		;STI R0,*+AR1(2) ; CLKX DATOUT=1 DX DATOUT=1 FSX DATOUT=1
		
;START:	
		LDI @SRCTRL0,R0 ;
		STI R0,*+AR1(3) ; CLKR DATOUT=0	DR DATOUT=0   FSR DATOUT=0
        
                
		LDI @SRCTRL1,R0 ;
		STI R0,*+AR1(3) ; CLKR DATOUT=1	DR DATOUT=1   FSR DATOUT=1
		
		NOP
        NOP
        NOP
		
		LDI @SRCTRL0,R0 ;
		STI R0,*+AR1(3)
		
;		BR START						 
;********************************************************        
;结束,恢复堆栈        
        POP  AR4      ;	
        POP  AR3      ;	
        POP  AR2      ;
        POP  AR1      ;        
        POP  AR0      ;        
        POPF R6       ;
        POP  R6       ;
        POPF R3       ;
        POP  R3       ;
        POPF R2       ;
        POP  R2       ; 
        POPF R1       ;
        POP  R1       ; 
        POPF R0       ;
        POP  R0       ;  
        POP  ST		  ;   
        ;SUBI 2,SP	  ;
        ;POP  FP		  ;
        RETI          ;函数返回                         

⌨️ 快捷键说明

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