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

📄 test22.lst

📁 0.5秒定时刷新数码管 一路输入的录音 32Kflash读写 AD转换 单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
                     <      	.DEFINE C_LVD36V				0x0003;			// LVD = 3.6V
                     <      	
                     <      	
                     <      	.EXTERNAL	F_SP_Read_INT_Status;			// for further use
                     <      	.EXTERNAL 	F_SP_Write_INT_Status;			// for further use
                     <      	.EXTERNAL  	F_SP_Set_INT_Vector;			// for further use
                     <      	.EXTERNAL	F_SP_Clear_INT_Vector;			// for further use
                     <      	
                     <      	.EXTERNAL	F_SP_Send_Out;					//
                     <      	.EXTERNAL	F_SP_Send_DAC1;					//
                     <      	.EXTERNAL	F_SP_Send_DAC2;					//
                     <      	.EXTERNAL	F_SP_Send_Two_DAC;				//
                     <      	.EXTERNAL	F_SP_Init_HW;					//
                     <      	
                     <      	.EXTERNAL	R_InterruptStatus;
                     <      	
                     <      	
                     <      	.EXTERNAL 	F_SP_RampUpDAC1;
                     <      	.EXTERNAL 	F_SP_RampDnDAC1;
                     <      	.EXTERNAL 	F_SP_RampUpDAC2;
                     <      	.EXTERNAL  	F_SP_RampDnDAC2;
                     <      	
                     <      	.EXTERNAL 	F_SP_InitQueue;
                     <      	.EXTERNAL 	F_SP_ReadQueue;
                     <      	.EXTERNAL 	F_SP_WriteQueue;
                     <      	.EXTERNAL 	F_SP_TestQueue;
                     <      	
                     <      	
                     <      	
                     <      	.EXTERNAL	F_SP_Get_ADC
                     <      	
                     <      	.EXTERNAL 	F_SP_Set_P_TimerA_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_TimerA_Data
                     <      	.EXTERNAL 	F_SP_Set_P_TimerB_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_TimerB_Data
                     <      	.EXTERNAL 	F_SP_Set_P_INT_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_INT_Clear
                     <      	.EXTERNAL 	F_SP_Set_P_SystemClock
                     <      	.EXTERNAL 	F_SP_Set_P_DAC_Ctrl
                     <      	.EXTERNAL 	F_SP_Set_P_ADC_Ctrl
                     <      	
                     <      		
                     <      	
                     <      	//--------------------------------------------
                     <      	SACM_MACRO1: 	.MACRO
                     <      		
                     <      		.ENDM
                     <      	
                     <      	SACM_MACRO2:	.MACRO
                     <      		
                     <      		.ENDM
                     <      	
                     <      	
                     <      	
                     <      	
                     <      	//.define PC_Play_Enable_A2000		1    	// Enable the PC-Play function for SACM-A2000 module
                     <      	//.define PC_Play_Enable_S480		1    	// Enable the PC-Play function for SACM-S480 module
                     <      	//.define PC_Play_Enable_S240		1    	// Enable the PC-Play function for SACM-S240 module    
                     <      	//.define PC_Play_Enable_MS01		1    	// Enable the PC-Play function for SACM-MS01 module
                     <      	
                     <      	
                     <      	
                     <      	//========================================================================================        
                     <      	// End of hardware.inc
                     <      	//========================================================================================
                            	
                            			.define RUN_2Hz_TimeBase_INT 0x0004
                            	
00000000                    			.RAM
00000000 00 00 00 00        	DisplayBuff:	.DW 4 DUP(0)	//定义一个4存储单元的显示缓冲区,存入显示内容
         00 00 00 00
                            	
00008080                    			.DATA
                            	//显示段码存放区
                            	DispTbl:
00008080 3F 00 06 00        			.DW 0x003F,0x0006,0x005B,0x004F,0x0066		//0,1,2,3,4
         5B 00 4F 00
         66 00      
00008085 6D 00 7D 00        			.DW 0x006D,0x007D,0x0007,0x007F,0x006F		//5,6,7,8,9
         07 00 7F 00
         6F 00      
0000808A 77 00 7C 00        			.DW 0x0077,0x007C,0x0039,0x005E,0x0079		//A,b,C,d,E
         39 00 5E 00
         79 00      
0000808F 71 00 73 00        			.DW 0x0071,0x0073,0x00FF,0x0000				//F,P,全亮,全灭
         FF 00 00 00
                            	
00000004                    			.RAM
00000004 00 00              			.VAR Char
                            	
0000805A                    			.CODE
                            			.PUBLIC _main;
                            	//============================================================= 
                            	// 函数名称:    _main
                            	// 功能描述:    数码管动态显示.	
                            	// 语法格式:    无
                            	//入口参数:     无
                            	// 出口参数:    无
                            	// 注意事项:    仅为用户模型
                            	//=============================================================
                            	_main:
0000805A 09 93 FF 01        			R1=0x01FF;					//初始化IOA0-IOA7为低电平输出
0000805C 19 D3 02 70        			[P_IOA_Dir]=R1;
0000805E 19 D3 03 70        			[P_IOA_Attrib]=R1;
00008060 09 93 00 01        			R1=0x0100;					//IOA8输出高电平,屏蔽按键
00008062 19 D3 00 70        			[P_IOA_Data]=R1;
00008064 7C 92              			R1=0x003C;					//初始化IOB2-IOB5为低电平输出
00008065 19 D3 07 70        			[P_IOB_Dir]=R1;
00008067 19 D3 08 70        			[P_IOB_Attrib]=R1;
00008069 40 92              			R1=0x0000;
0000806A 19 D3 05 70        			[P_IOB_Data]=R1;
0000806C 40 92              			R1=0x0000
0000806D 19 D3 04 00        			[Char]=R1
0000806F 0D 9B 00 00        			BP=DisplayBuff				//设置显示缓冲区
00008071 52 92              			R1=0x0012					//4位数码管全灭
00008072 D5 D2              			[BP++]=R1
00008073 D5 D2              			[BP++]=R1
00008074 D5 D2              			[BP++]=R1
00008075 D5 D2              			[BP++]=R1
00008076 44 92              			R1=RUN_2Hz_TimeBase_INT		//开放2Hz中断
00008077 19 D3 10 70        			[P_INT_Ctrl]=R1
00008079 41 F1              			int IRQ
                            	Loop:
0000807A 41 92              			r1=0x0001                    		//清看门狗
0000807B 19 D3 12 70        			[P_Watchdog_Clear]=r1
0000807D 40 F0 26 80        			CALL Display
0000807F 46 EE              			JMP Loop
                            	
00008009                    			.text	
                            			.public _IRQ5		
                            	//============================================================= 
                            	// 函数名称:  _IRQ5
                            	// 功能描述:  IRQ5中断有两个中断源:2Hz和4Hz,2Hz中断内不断修改显示缓冲区内容
                            	//入口参数:     无
                            	// 出口参数:    无
                            	// 注意事项:    仅为用户模型
                            	//=================================================================
                            	_IRQ5:
00008009 A8 DA              			PUSH R1,R5 to [SP]	   	//压栈保护 
0000800A 44 92              			R1=0x0004 	
0000800B 11 C3 10 70        			TEST R1,[P_INT_Ctrl]	//比较是否为2Hz中断	 
0000800D 05 4E              			JNZ  IRQ_2Hz	 		  		//是,则转至对应程序段 
                            	IRQ_4Hz:
0000800E 48 92              			R1=0x0008
0000800F 19 D3 11 70        			[P_INT_Clear]=r1         
00008011 A8 90              			POP R1,R5 FROM [SP]   
00008012 98 9A              			RETI
                            	
                            	IRQ_2Hz:
00008013 11 93 04 00        			R1=[Char]				//修改显示缓冲区
00008015 0D 9B 00 00        			BP=DisplayBuff
00008017 D5 D2              			[BP++]=R1
00008018 D5 D2              			[BP++]=R1
00008019 D5 D2              			[BP++]=R1
0000801A D5 D2              			[BP++]=R1
0000801B 41 02              			R1+=1;
0000801C 53 42              			CMP R1,0x0013
0000801D 01 4E              			JNE Store
0000801E 40 92              			R1=0x0000
                            	Store:
0000801F 19 D3 04 00        			[Char]=R1
00008021 44 92              			R1=0x0004
00008022 19 D3 11 70        			[P_INT_Clear]=R1
00008024 A8 90              			POP R1,R5 FROM [SP]
00008025 98 9A              			RETI
                            	
                            	//数码管显示程序
                            	//原理:从A0-A7输出段码,从B2-B5输出位码,均为高电平有效
                            	//入口:显示缓冲区DisplayBuff
                            	//出口:无
                            	Display:	.proc
00008026 40 96              			R3=0x0000;					//初始化计数初值
00008027 0A 95 00 00        			R2=DisplayBuff;				//R2指向显示缓冲区
00008029 44 98              			R4=0x0004;					//显示位码
                            	Next:
0000802A 40 92              			R1=0x0000					//暂时关闭所有的数码管
0000802B 19 D3 05 70        			[P_IOB_Data]=R1
0000802D 0D 9B 80 80        			BP=DispTbl;					//BP指向段码表
0000802F D2 92              			R1=[R2++];					//从显示缓冲区内取显示内容(即偏移量)
00008030 01 0B              			BP+=R1;						//段码表首地址加上偏移量
00008031 C5 92              			R1=[BP];						//从段码表中取出段码
00008032 09 A3 00 01        			R1|=0x0100
00008034 19 D3 00 70        			[P_IOA_Data]=R1;				//送出段码
00008036 1C D9 05 70        			[P_IOB_Data]=R4;				//送出位码
00008038 44 99              			R4=R4 LSL 1;					//修改位码,以便下一位显示
00008039 41 06              			R3+=0x0001;					//计数器加1
0000803A 44 46              			CMP R3,0x0004				//4位数据显示完否
0000803B 52 0E              			JB Next						//未显示完
0000803C 90 9A              			RETF
                            			.endp
                            			
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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