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

📄 system.asm

📁 暑假做的直流电源的程序,能实现分级调控输出,并在数码管显示
💻 ASM
字号:
//包含SP_Init_IOA();SP_Init_IOB(),SP_INT_128Hz()TurnOffLed(),void F_Show(int A,int B),
//void F_ClearWatchdog(void)
.INCLUDE hardware.inc
.RAM
.DATA
   // C_Address: .DW 0x00bf,0x0086,0x00db,0x00cf, 0x00e6,0x00ed,0x00fc,0x0087,0x00ff,0x00ef;//'0''1''2''3''4''5''6''7''8''9'的代码
   // C_Dig:     .DW 0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000;//选中LED管
     //数码管上数字编码,分别是0-F
    C_Address:  .dw 0x003f, 0x0006, 0x005b, 0x004f, 0x0066, 0x006d, 0x007d, 0x0007, 0x007f, 0x006f
 		        .dw 0x0077,0x007f,0x0039,0x003f,0x0079,0x0071
    //数码管显示控制编码,分别控制1-8个数码管显示
     C_Dig:
               .dw 0x0000,0x0100,0x0200,0x0300,0x0400,0x0500,0x0600,0x0700
.CODE

//============================================================================================
//函数: SP_Init_IOA()
//语法:void SP_Init_IOA(int A,int B,int C)
//描述:初始化A口
//参数:A,方向向量单元,B数据单元,C属性向量单元
//返回:无
//=============================================================================================
.PUBLIC _SP_Init_IOA;	//初始化A口高8位为键盘输入,低8位为da传输数据通道               
_SP_Init_IOA: .PROC
   	r1 = 0xf0FF;      
    [P_IOA_Attrib] = r1;    
    [P_IOA_Dir] = r1;
    [P_IOA_Data] = r1;
    RETF
.ENDP;
//============================================================================================
//函数: SP_Init_IOB()
//语法:void SP_Init_IOB(int A,int B,int C)
//描述:初始化B口
//参数:A,方向向量单元,B数据单元,C属性向量单元
//返回:无
//=============================================================================================
.PUBLIC _SP_Init_IOB;              //初始B为输出口
_SP_Init_IOB: .PROC
   	r1 = 0xffff;      
    [P_IOB_Attrib] = r1;    
    [P_IOB_Dir] = r1;
    r1=0x0000;
    [P_IOB_Data] = r1;
    RETF
.ENDP;

//============================================================================================
//函数: TurnOffLed()
//语法:void TurnOffLed()
//描述:关闭所有LED函数
//参数:无
//返回:无
//=============================================================================================
.PUBLIC _TurnOffLed;
_TurnOffLed: .PROC
    r1 = 0x0000
    [P_IOB_Data] = r1
    RETF
 .ENDP

//============================================================================================
//函数: SP_INT_128Hz()
//语法:void SP_INT_128Hz()
//描述:TMB2选择128Hz
//参数:无
//返回:无
//=============================================================================================
.public _SP_INT_128Hz;
 _SP_INT_128Hz:
     r1 = 0x0000;   
     [P_TimeBase_Setup]=r1        // TMB2选择128Hz //TMB1选择8Hz,但不起作用 
     r1 = 0x0001 				  //开中断IRQ6_TMB2
   	 [P_INT_Ctrl]= r1 
	 INT IRQ
     RETF;
     
//============================================================================================
//函数: F_Show()
//语法:void F_Show(int A,int B)
//描述:点亮LED
//参数:A,LED的位数(C_Dig),B,LED的显示值
//返回:无
//============================================================================================  
.PUBLIC _F_Show;
_F_Show: .PROC
    PUSH bp TO  [sp];  		      //弹出入口参数共两个入口参数
    bp = sp + 1   
L_Loop: 
    r1 = [bp+3]                   //取出第一个入口参数
    r3 = [bp+4]                   //取出第二个入口参数
    r2 =  r1 + C_Dig;             //取LED管的片选地址    
    r2  = [r2]   
    r4 =  r3 + C_Address          //取显示数据的地址 
    r4 = [r4] 
    r2 |= r4     
    [P_IOB_Data] = r2;            //显示数据  
    POP bp FROM [sp]
    RETF;
.ENDP
//============================================================================================
//函数: F_ClearWatchdog()
//语法:void F_ClearWatchdog(void)
//描述:清看门狗
//返回:无
//============================================================================================  

.PUBLIC _F_ClearWatchdog;
_F_ClearWatchdog: .PROC
    r1 = 1;
    [P_Watchdog_Clear] = r1;
    RETF;
    .ENDP
//===========================================================================================
//函数:F_Show_Extra()
//语法:void F_Show_Extra()
//描述:LED显示中加小数点,跟随F_Show()
//返回:无
//===========================================================================================
.public _F_Show_Extra;
_F_Show_Extra: .proc
   r1=[P_IOB_Data];
   r1|=0x0080
   [P_IOB_Data]=r1
   retf;
   .endp

⌨️ 快捷键说明

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