?? sys.asm
字號:
.include Hardware.inc;
.include key.inc;
.include resource.inc;
.external _g_uisum;
.DATA
C_Address: .DW 0x3f00,0x8600,0xdb00,0xcf00, 0xe600,0xed00,0xfd00,0x8700,0xff00,0xef00;//'0''1''2''3''4''5''6''7''8''9'的代碼
C_Dig: .DW 0x0008,0x0020,0x0040,0x0080;//選中LED管
.CODE
//*********************************************************//
//函數(shù):System_Initial()
//描述:鍵盤掃描初始化
//參數(shù):無
//返回:無
//*********************************************************//
.CODE
.public _System_Initial;
.public F_System_Initial;
_System_Initial: .PROC
F_System_Initial:
call F_User_Init; // 調(diào)用鍵盤掃描
call F_Key_Scan_Initial;
retf;
.ENDP;
//*********I/O初始化*****************************//
//*********************************************************//
F_User_Init:
R1 = 0xFFF8;
[P_IOA_Dir] = R1; //A口為輸入口
[P_IOA_Attrib] = R1;
R1 = 0xF338
[P_IOA_Data] = R1; //下拉輸入
R1 = 0xFFEF;
[P_IOB_Dir] = R1; //A口為輸入口
R1=0xFFFB
[P_IOB_Attrib] = R1;
[P_IOB_Data] = R1; //下拉輸入
R1=0x0004
[P_FeedBack]=r1
retf;
//*********************************************************//
//函數(shù):System_ServiceLoop()
//描述:鍵盤去抖和鍵盤掃描
//參數(shù):無
//返回:無
//*********************************************************//
.public _System_ServiceLoop;
_System_ServiceLoop: .PROC
call F_Key_DebounceCnt_Down; //鍵盤去抖
call F_Key_Scan_ServiceLoop; //鍵盤掃描
R1=0x0001; //
[P_Watchdog_Clear]=R1; //
retf;
.ENDP;
//*********************************************************//
//函數(shù):Clear_WatchDog()
//描述:看門狗清0
//參數(shù):無
//返回:無
//*********************************************************//
.public _Clear_WatchDog;
_Clear_WatchDog: .PROC
R1=0x0001;
[P_Watchdog_Clear]=R1;
retf;
.ENDP
//=========================================//
//函數(shù)名稱:中斷設(shè)置
//========================================//
.public _RunTime2Hz;
_RunTime2Hz: .proc
irq off
r1 = 0x0004;
[P_INT_Ctrl] = r1;
INT IRQ; //開中斷
retf
.endp;
.public _SP_INT_32Hz
_SP_INT_32Hz: .proc
irq off
R1 = 0x0002;
[P_TimeBase_Setup]=r1
//r1 = [P_INT_Ctrl]
r1 = 0x0002 //開中斷IRQ6_TMB1和IRQ6_TMB2
[P_INT_Ctrl]= r1
irq on
retf;
.endp;
.public _Turnoff_INT_32Hz
_Turnoff_INT_32Hz: .proc
irq off
r1 = [P_INT_Ctrl]
r1 &= 0xfffd;
[P_INT_Ctrl] = r1;
irq on
retf;
.endp;
.public _OffTime2Hz
_OffTime2Hz: .proc
r1 = [P_INT_Ctrl]
r1 &= 0xfffb;
[P_INT_Ctrl] = r1;
r1 = 0x0000
[_g_uisum] = r1;
retf;
.endp;
//***************R/C/L通道選擇及二極管點亮******************//
.PUBLIC _Rline_on
_Rline_on: .PROC
R1=[P_IOA_Data]
//選擇通道y0,亮紅燈
R1&=0xFFE7
R1|=0x4000
[P_IOA_Data]=r1
retf;
.ENDP
.PUBLIC _Cline_on
_Cline_on: .PROC
R1=[P_IOA_Data]
//選擇通道y1,亮綠黃燈
R1&=0xFFEF
R1|=0x2000
[P_IOA_Data]=r1
retf;
.ENDP
.PUBLIC _Lline_on
_Lline_on: .PROC
R1=[P_IOA_Data]
//選擇通道y2,亮綠燈
R1&=0xFFF7
R1|=0x1000
[P_IOA_Data]=r1
retf;
.ENDP
//************************************************//
//***************R/C換檔***************************//
.PUBLIC _R_Above1K
_R_Above1K: .PROC
R1=[P_IOA_Data]
//IOA5=0,IOA8=0,IOA6=1,IOA7=1
R1&=0xFEDF
R1|=0x40C0
[P_IOA_Data]=r1
retf;
.ENDP
.PUBLIC _C_Below1K
_C_Below1K: .PROC
R1=[P_IOA_Data]
//IOA9=0,IOA10=1
R1&=0xFDFF
R1|=0x0400
[P_IOA_Data]=r1
retf;
.ENDP
//***********************************************//
.PUBLIC _TmbCount
_TmbCount: .PROC
R1=0x0000
[P_TimerB_Data]=R1;//開始計數(shù)
r1 =0x0007 //設(shè)置外部時鐘源
[P_TimerB_Ctrl]=r1
retf;
.ENDP
.PUBLIC _F_Show;
_F_Show: .PROC
PUSH BP TO [SP]; //彈出入口參數(shù)共兩個入口參數(shù)
BP = SP + 1
R1 = [BP+3] //取出第一個入口參數(shù)
R3 = [BP+4] //取出第二個入口參數(shù)
R2 = R1 + C_Dig; //取LED管的片選地址
R2 = [R2]
R4 = R3 + C_Address //取顯示數(shù)據(jù)的地址
R4 = [R4]
R2 |= R4
r1=[P_IOB_Buffer]
r1 &= 0x0017;
r2 |= r1;
[P_IOB_Data] = R2; //
POP BP FROM [SP]
RETF;
.ENDP
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -