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

📄 demo.lst

📁 key scan and lcd display file it can run in the computer with sunplus compile
💻 LST
📖 第 1 页 / 共 5 页
字号:
                     <      	.const  P_Seg5          = 0x7105;
                     <      	.const  P_Seg6          = 0x7106;
                     <      	.const  P_Seg7          = 0x7107;
                     <      	.const  P_Seg8          = 0x7108;
                     <      	.const  P_Seg9          = 0x7109;
                     <      	.const  P_Seg10         = 0x710A;
                     <      	.const  P_Seg11         = 0x710B;
                     <      	.const  P_Seg12         = 0x710C;
                     <      	.const  P_Seg13         = 0x710D;
                     <      	.const  P_Seg14         = 0x710E;
                     <      	.const  P_Seg15         = 0x710F;
                     <      	.const  P_Seg16         = 0x7110;
                     <      	.const  P_Seg17         = 0x7111;
                     <      	.const  P_Seg18         = 0x7112;
                     <      	.const  P_Seg19         = 0x7113;
                     <      	.const  P_Seg20         = 0x7114;
                     <      	.const  P_Seg21         = 0x7115;
                     <      	.const  P_Seg22         = 0x7116;
                     <      	.const  P_Seg23         = 0x7117;
                     <      	.const  P_Seg24         = 0x7118;
                     <      	.const  P_Seg25         = 0x7119;
                     <      	.const  P_Seg26         = 0x711A;
                     <      	.const  P_Seg27         = 0x711B;
                     <      	.const  P_Seg28          = 0x711C
                     <      	.const  P_Seg29          = 0x711D
                     <      	.const  P_Seg30          = 0x711E
                     <      	.const  P_Seg31          = 0x711F
                     <      	.const  P_Seg32          = 0x7120
                     <      	.const  P_Seg33          = 0x7121
                     <      	.const  P_Seg34          = 0x7122
                     <      	.const  P_Seg35          = 0x7123
                     <      	.const  P_Seg36          = 0x7124
                     <      	.const  P_Seg37          = 0x7125
                     <      	.const  P_Seg38          = 0x7126
                     <      	.const  P_Seg39          = 0x7127
                     <      	
                     <      	//-----------------------------------------------------------------------------//
                     <      	//Line Control
                     <      	//Procedure : 1. Enable Line det.
                     <      	//            2. Latch line status
                     <      	//            3. Enable wakeup/int
                     <      	//            4. Set wakeup/int sources
                     <      	//            5. Sleep....
                     <      	//-----------------------------------------------------------------------------//
                     <      	.const  P_LineDetCtrl   = 0x702E; //(R/W)
                     <      	
                     <      	.const  B_CMPOut        = 0x0001; //
                     <      	.const  B_EnLineIntWp   = 0x0040; //
                     <      	.const  B_EnLineDet     = 0x0080; //
                     <      	
                     <      	.const  P_LatchLine     = 0x702F; //
                     <      	
                     <      	//-----------------------------------------------------------------------------//
                     <      	.const  P_KeyScanCtrl   = 0x703B;
                     <      	.const  B_AKSEN       = 0x0080;   //0/1 - disable/enable auto key scan function
                     <      	.const  B_HIZ1        = 0x0002;   //0/1 - disable/enable normal key scan mode of P_Seg15~8
                     <      	.const  B_HIZ0        = 0x0001;   //0/1 - disable/enable normal key scan mode of P_Seg7~0
                     <      	
                     <      	.const  P_KeyScanMode   = 0x703A; //b0~b8 select IOAx as wakeup source
                     <      	.const  P_KeyScanPort   = 0x703C; //maually scan key
                            	
                            	//----------------------------------------------------------------------------*/
00000001                    	.RAM
                            	
00000001 00 00              	LcdYear:           .DW        0;
00000002 00 00              	LcdMonDayHr:       .DW        0;
00000003 00 00              	LcdMinSec:         .DW        0;
                            	
00000004 00 00              	TwoHzIntFlag:      .DW        0;
                            	
00000005 00 00              	GlobalFlag1:       .DW        0;
                            	.const   B_KeyReady         = 0x0001;
                            	
                            	
                            	//----------------------------------------------------------------------------*/
00000006 00 00              	KeyScan512HzTmr:   .DW        0;
00000007 00 00              	KeyScanFlag:       .DW        0;
00000008 00 00              	KeyIntFlag:        .DW        0;
00000009 00 00 00 00        	KeyStatusBuf:      .DW        8 DUP(0);
         00 00 00 00
         00 00 00 00
         00 00 00 00
                            	
                            	//----------------------------------------------------------------------------*/
00000011 00 00              	Year:              .DW        0;
00000012 00 00              	MonDayHr:          .DW        0;
00000013 00 00              	MinSec:            .DW        0;
00000014 00 00              	BatLevel:          .DW        0;
00000015 00 00              	CidCnt:            .DW        0;
                            	
                            	//----------------------------------------------------------------------------*/
                            	.const   StackBottom        = 0x03FF;
                            	
                            	//----------------------------------------------------------------------------*/
0000506C                    	.code
                            	.public _main;
                            	_main:
0000506C 40 F1              	        INT     OFF;                    //Disable Interrupt
0000506D 40 92              	        R1 = 0;
0000506E 19 D3 12 70        	        [P_WakeUp] = R1;                //disable all wakeup sources
00005070 19 D3 10 70        	        [P_Int] = R1;
00005072 09 93 AA 55        	        R1 = 0x55AA;                    //clear Watchdog
00005074 19 D3 16 70        	        [P_Watchdog_Clr] = R1;
00005076 08 91 FF 03        	        SP = StackBottom;               //initialize stack
00005078 09 93 5D C0        	        R1 = B_8KHz+B_512Hz+B_128Hz+B_2Hz+B_Enable32768+B_Strong32768;
0000507A 19 D3 18 70        	        [P_TimeBaseSet] = R1;           // it's very important to keep 32KHz
                            	                                        // crystal running in strong mode
0000507C 11 93 13 70        	        R1 = [P_WakeUpClr];
0000507E 19 D3 13 70        	        [P_WakeUpClr] = R1;             //clear all wakeup hardware flags
                            	
00005080 42 92              	        R1 = B_NormalCpuClock;
00005081 19 D3 15 70        	        [P_SystemClock] = R1;           // 1MHz/4 - for normal operation
                            	
00005083 40 F0 B6 50        	        CALL    F_InitHardWare;         //reset hardware
00005085 40 F0 F8 50        	        CALL    F_ClrAllSRAM;
                            	
00005087 09 93 D5 07        	        R1 = 2005;                      //initialize date and time
00005089 19 D3 11 00        	        [Year] = R1;
0000508B 09 93 20 04        	        R1 = 1*1024 + 1*32;
0000508D 19 D3 12 00        	        [MonDayHr] = R1;
0000508F 40 92              	        R1 = 0;
00005090 19 D3 13 00        	        [MinSec] = R1;
00005092 09 93 00 70        	        R1 = 0x7000;
00005094 19 D3 14 00        	        [BatLevel] = R1;
                            	
00005096 40 F0 FF 50        	        CALL    F_InitLcd;              //clear LCD dots, turn on LCD and
                            	                                        // set LCD contrast
00005098 40 F0 2C 52        	        CALL    F_InitDisplay;
                            	
0000509A 11 93 11 70        	        R1 = [P_IntClr];
0000509C 19 D3 11 70        	        [P_IntClr] = R1;                //clear all interrupt requirement
0000509E 09 93 A2 00        	        R1 = B_512HzInt+B_2HzInt+B_IoaInt;
000050A0 19 D3 10 70        	        [P_Int] = R1;                   //set interrupt sources
000050A2 43 F1              	        INT     FIQ,IRQ;
                            	//----------------------------------------------------------------------------------------
                            	MainLoop:
000050A3 09 93 AA 55        	        R1 = 0x55AA;                    //Clear Watchdog
000050A5 19 D3 16 70        	        [P_Watchdog_Clr] = R1;
                            	
000050A7 40 F0 11 51        	        CALL    F_KeyScan;              //scan keyboard
                            	
000050A9 11 93 04 00        	        R1 = [TwoHzIntFlag];
000050AB 49 5E              	        JZ      MainLoop;
000050AC 40 92              	        R1 = 0;
000050AD 19 D3 04 00        	        [TwoHzIntFlag] = R1;
                            	
000050AF 11 93 06 71        	        R1 = [P_Seg6];
000050B1 09 83 00 01        	        R1 ^= B_Com8;                   //blinking colon ":"
000050B3 19 D3 06 71        	        [P_Seg6] = R1;
                            	
000050B5 53 EE              	        JMP     MainLoop;
                            	
                            	//////////////////////////////////////////////////////////////////////////////////////////
                            	//  Functions for Main Program
                            	//////////////////////////////////////////////////////////////////////////////////////////
                            	
                            	//----------------------------------------------------------------------------//
                            	F_InitHardWare:
000050B6 40 92              	        R1 = 0;
000050B7 19 D3 00 70        	        [P_IOA_Data] = R1;
000050B9 19 D3 02 70        	        [P_IOA_Dir] = R1;
000050BB 19 D3 14 70        	        [P_IoaWakeUp] = R1;
000050BD 09 93 00 80        	        R1 = 0x8000;                    //Enable IOA7 internal Pull-high resistor
000050BF 19 D3 03 70        	        [P_IOA_PullR] = R1;
                            	
000050C1 40 92              	        R1 = 0;
000050C2 19 D3 05 70        	        [P_IOB_Data] = R1;
000050C4 09 93 FF 00        	        R1 = 0x00FF;
000050C6 19 D3 07 70        	        [P_IOB_Dir] = R1;
                            	
000050C8 40 92              	        R1 = 0;
000050C9 19 D3 08 70        	        [P_IOC_Data] = R1;
000050CB 09 93 FF 00        	        R1 = 0x00FF;
000050CD 19 D3 0A 70        	        [P_IOC_Dir] = R1;
                            	
000050CF 40 92              	        R1 = 0;
000050D0 19 D3 0B 70        	        [P_IOD_Data] = R1;
000050D2 09 93 FF 00        	        R1 = 0x00FF;
000050D4 19 D3 0D 70        	        [P_IOD_Dir] = R1;
                            	
000050D6 4F 92              	        R1 = 0x000F;                    //IOC0 & IOC1 provide interrupt/wakeup
000050D7 19 D3 0E 70        	        [P_IOCD_Ctrl] = R1;             // at both rising & falling edges
                            	
000050D9 40 92              	        R1 = 0;
000050DA 19 D3 21 70        	        [P_BatDet] = R1;
000050DC 19 D3 26 70        	        [P_AdcCtrl] = R1;
000050DE 19 D3 25 70        	        [P_AgcCtrl] = R1;
000050E0 19 D3 2C 70        	        [P_PgaInSelect] = R1;
000050E2 19 D3 1A 70        	        [P_Tmr_Ctrl] = R1;
000050E4 19 D3 22 70        	        [P_DtmfTone] = R1;
000050E6 19 D3 23 70        	        [P_Ch0Envelope] = R1;
                            	//        [P_KeyScanCtrl] = R1;           //disable Key-Scan funcion that
                            	//        [P_KeyScanMode] = R1;           // share pins with LCD segments
                            	//        [P_KeyScanPort] = R1;
000050E8 19 D3 28 70        	        [P_RiDet] = R1;
000050EA 19 D3 2E 70        	        [P_LineDetCtrl] = R1;
                            	
000050EC 09 93 80 00        	        R1 = 0x0080;                    //Enable Auto Key Scan
000050EE 19 D3 3B 70        	        [P_KeyScanCtrl] = R1;
000050F0 09 93 7F 00        	        R1 = 0x007F;                    //IOA0~6 serve as Key Input port
000050F2 19 D3 3A 70        	        [P_KeyScanMode] = R1;
000050F4 40 92              	        R1 = 0;
000050F5 19 D3 3C 70        	        [P_KeyScanPort] = R1;
000050F7 90 9A              	        RETF;
                            	
                            	//----------------------------------------------------------------------------------------
                            	F_ClrAllSRAM:
000050F8 40 9A              	        BP = 0;
000050F9 40 92              	        R1 = 0;
                            	ClrSRAMLoop:
000050FA D5 D2              	        [BP++] = R1;
000050FB 0D 4B FF 03        	        CMP     BP,0x03FF;
000050FD 44 4E              	        JNZ     ClrSRAMLoop;
000050FE 90 9A              	        RETF;
                            	
                            	//----------------------------------------------------------------------------*/
                            	F_InitLcd:
000050FF 40 F0 06 51        	        CALL    F_ClrLcd;       //clear all Lcd dots
                            	
00005101 09 93 8F 80        	        R1 = B_Duty+B_LcdEn + 0x000F;
00005103 19 D3 20 70        	        [P_LcdCtrl] = R1;
00005105 90 9A              	        RETF;
                            	
                            	F_ClrLcd:

⌨️ 快捷键说明

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