main.asm

来自「SUNPLUS的8BIT的MCU SPMC65X基本功能函数库及使用说明」· 汇编 代码 · 共 168 行

ASM
168
字号
;==================================================================================
; The information contained herein is the exclusive property of
; Sunplus Technology Co. And shall not be distributed, reproduced,
; or disclosed in whole in part without prior written permission.
;       (C) COPYRIGHT 2004   SUNPLUS TECHNOLOGY CO.                                  
;                   ALL RIGHTS RESERVED
; The entire notice above must be reproduced on all authorized copies.
;==================================================================================
										
;==================================================================================
;	Project Name	:	
;	Applied Body	:	SPMC65P2404A
;	Firmware version:
;	Programer		:
;	Date			:	2004-9-11
;	Description		:	The program presents an example that how to use bit instruction.
;						
;	Hardware Connect:	
;	Link File		:	
;	IDE Version		: 	V1.6.5	
;	BODY Version	:	V1.0.0A
;==================================================================================

.SYNTAX  6502							;process standard 6502 addressing syntax
.LINKLIST								;generate linklist information
.SYMBOLS								;generate symbolic debug information
;************************************************************************************
;*																					*
;*      System Register Define	                                                    *
;*																					*
;************************************************************************************
.INCLUDE		SPMC65P2404A.inc				;Define all hardware,Registers and ports. 
;************************************************************************************

;************************************************************************************
;*																					*
;*      Data memory Define	                                                        *
;*																					*
;************************************************************************************
.PAGE0									;define values in the range from 00h to FFh
GB_Data				DS			1		
;************************************************************************************
.DATA									;define data storage section
;************************************************************************************
;*																					*
;*      	 Program Area															*
;*																					*
;************************************************************************************
.CODE
;************************************************************************************
;*																					*
;*      Power on Reset Process	                                                    *
;*																					*
;************************************************************************************
V_Reset:
		sei								;Disable interrupt
		ldx		#C_STACK_BOTTOM			;Initial stack pointer at $00ff
		txs								;Transfer to stack point
        
?L_Main_Loop:							;the example for test
;==============================================
;Instruction:	clr		aa,x
;Function:		Bit Clear,(M.bit)<-"0"
;Example:		clr		$82,1 
		        ;clear bit1 of the data in $82			
;==============================================
		clr		$82,0			;clear bit0 of the data in $82                        
		clr		$82,1			;clear bit1 of the data in $82 	                
		clr		$82,2			;clear bit2 of the data in $82                 
		clr		$82,3			;clear bit3 of the data in $82                 
		clr		$82,4			;clear bit4 of the data in $82                 
		clr		$82,5			;clear bit5 of the data in $82                 
		clr		$82,6			;clear bit6 of the data in $82                 
		clr		$82,7			;clear bit7 of the data in $82                 
                                                    
;==============================================     
;Instruction:	set		aa,x                
;Function:		Bit set,(M.bit)<-"1"        
;Example:		set		$82,1       
		        ;set bit1 of the data in $82
;==============================================     
		set		 $82,0			;set bit0 of the data in $82                
		set		 $82,1			;set bit1 of the data in $82                
		set		 $82,2			;set bit2 of the data in $82                
		set		 $82,3			;set bit3 of the data in $82                
		set		 $82,4			;set bit4 of the data in $82                
		set	 	 $82,5			;set bit5 of the data in $82                
		set		 $82,6			;set bit6 of the data in $82               
		set	     $82,7			;set bit7 of the data in $82               
                                                    
;==============================================     
;Instruction:	inv		aa,x                
;Function:		Bit inversr,(M.bit)<-~(M.bit
;Example:		inv		$82,1       
		        ;inverse bit1 the of data in $82
;==============================================     
		inv		$82,0			;inverse bit0 the of data in $82                
		inv		$82,1			;inverse bit1 the of data in $82                
		inv		$82,2			;inverse bit2 the of data in $82                
		inv		$82,3			;inverse bit3 the of data in $82                
		inv		$82,4			;inverse bit4 the of data in $82                
		inv		$82,5			;inverse bit5 the of data in $82                
		inv		$82,6			;inverse bit6 the of data in $82               
		inv		$82,7			;inverse bit7 the of data in $82                
	                                            
;==============================================     
;Instruction:	tst		$82,x               
;Function:		Bit test,Z<-~(M.bit)        
;Example:		tst		$82,1       
		        ;set "Z" if bit1 of the data
		        ;in $82 is 0.			
;==============================================		
		tst		$82,0			;set "Z" if bit0 of the data in $82 is 0               
		tst		$82,1			;set "Z" if bit1 of the data in $82 is 0               
		tst		$82,2			;set "Z" if bit2 of the data in $82 is 0               
		tst		$82,3			;set "Z" if bit3 of the data in $82 is 0               
		tst		$82,4			;set "Z" if bit4 of the data in $82 is 0              
		tst		$82,5			;set "Z" if bit5 of the data in $82 is 0               
		tst		$82,6			;set "Z" if bit6 of the data in $82 is 0               
		tst		$82,7			;set "Z" if bit7 of the data in $82 is 0               

;==============================================
;       other bit Instructions 														
;==============================================
		bit		GB_Data			;N: move bit7 to N
								;V: move bit6 to V
	    	        			;Z: Set if A&[GB_Data]==0

		clc						;Clear Carry flag Unconditionally 
		sec						;set Carry flag Unconditionally
		
		sed						;set D-flag: enter decimal mode 	
		cld						;clear D-flag: exit decimal mode
		
		sei						;Set Interrupt Disable flag to 1 Unconditionally
		cli						;Clear Interrupt mask Unconditionally
		
		clv						;Clear overflow flag Unconditionally      
				
		
		jmp     ?L_Main_Loop
                
;************************************************************************************
;*																					*
;*      Interrupt service process                         	                        *
;*																					*
;************************************************************************************
V_IRQ:      
		rti           
V_NMI:
		rti

VECTOR		.SECTION		
;************************************************************************************
;*																					*
;*      Interrupt Vector Table														*
;*																					*
;************************************************************************************
		DW		V_NMI				;Non-mask interrupt vector(no use)
		DW		V_Reset				;Reset vector
		DW		V_IRQ				;IRQ interrupt vector
;************************************************************************************
;*																					*
;*      End of Interrupt Vector Table												*
;*																					*
;************************************************************************************
.END

⌨️ 快捷键说明

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