📄 main.lst
字号:
0000802D 01 95 < R2 = R1;
0000802E 49 93 < R1 = R1 LSL 2;
0000802F 02 03 < R1 += R2;
00008030 40 94 < R2 = 0;
00008031 13 97 ED 01 < R3 = [DispXPos];
00008033 48 46 < CMP R3, 8;
00008034 20 0E < JB F_DispLowPosChar;
< F_DispHighPosChar:
00008035 0B 97 F0 01 < R3 = TB_CharCode
00008037 02 07 < R3 += R2
00008038 01 07 < R3 += R1
00008039 C3 96 < R3 = [R3];
0000803A 1B D7 EE 01 < [SegVal] = R3;
0000803C 59 97 < R3 = R1 LSL 4;
0000803D 5B 97 < R3 = R3 LSL 4;
0000803E 43 97 < R3 = R3 LSL 1;
0000803F 1B D7 EE 01 < [SegVal] = R3;
00008041 13 97 ED 01 < R3 = [DispXPos];
00008043 0B 07 CB 03 < R3 += TB_LcdAddr;
00008045 C3 96 < R3 = [R3];
00008046 02 07 < R3 +=R2;
00008047 1B D7 EF 01 < [SegAddr] = R3;
00008049 0B B7 FF 01 < R3 &= 0x01ff
0000804B 1B D7 EF 01 < [SegAddr] = R3;
0000804D 13 A7 EE 01 < R3 |= [SegVal];
0000804F 1B D7 EF 01 < [SegAddr] = R3;
00008051 41 04 < R2 += 1;
00008052 45 44 < CMP R2, 5;
00008053 5F 0E < JB F_DispHighPosChar;
00008054 1A EE < JMP DisplayCharRet;
< F_DispLowPosChar:
00008055 0B 97 F0 01 < R3 = TB_CharCode
00008057 01 07 < R3 += R1
00008058 02 07 < R3 += R2
00008059 C3 96 < R3 = [R3]
0000805A 1B D7 EE 01 < [SegVal] = R3;
0000805C 13 97 ED 01 < R3 = [DispXPos]
0000805E 0B 07 CB 03 < R3 += TB_LcdAddr
00008060 C3 96 < R3 = [R3]
00008061 02 07 < R3 += R2
00008062 1B D7 EF 01 < [SegAddr] = R3;
00008064 0B B7 80 FF < R3 &= 0xff80
00008066 1B D7 EF 01 < [SegAddr] = R3;
00008068 13 A7 EE 01 < R3 |= [SegVal]
0000806A 1B D7 EF 01 < [SegAddr] = R3;
0000806C 41 04 < R2 += 1;
0000806D 45 44 < CMP R2, 5;
0000806E 5A 0E < JB F_DispLowPosChar;
< DisplayCharRet:
0000806F 90 9A < RETF;
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
00008070 .Code
//----------------------------------------------------------------------------------------
.public _main;
_main:
00008070 40 F1 INT OFF; //Disable Interrupt
00008071 40 92 R1 = 0;
00008072 19 D3 12 70 [P_WakeUp] = R1; //disable all wakeup sources
00008074 19 D3 10 70 [P_Int] = R1;
00008076 09 93 AA 55 R1 = 0x55AA; //clear Watchdog
00008078 19 D3 16 70 [P_Watchdog_Clr] = R1;
0000807A 09 93 5D C0 R1 = B_8KHz+B_512Hz+B_128Hz+B_2Hz+B_Enable32768+B_Strong32768;
0000807C 19 D3 18 70 [P_TimeBaseSet] = R1; // it's very important to keep 32KHz
// crystal running in strong mode
0000807E 11 93 13 70 R1 = [P_WakeUpClr];
00008080 19 D3 13 70 [P_WakeUpClr] = R1; //clear all wakeup hardware flags
00008082 42 92 R1 = B_NormalCpuClock;
00008083 19 D3 15 70 [P_SystemClock] = R1; // 1MHz/4 - for normal operation
00008085 40 F0 97 80 CALL F_InitHardWare; //reset hardware
00008087 40 F0 D9 80 CALL F_ClrAllSRAM;
00008089 40 F0 E0 80 CALL F_InitLcd; //clear LCD dots, turn on LCD and
// set LCD contrast
0000808B 40 F0 EF 80 CALL F_InitDisplay;
0000808D 11 93 11 70 R1 = [P_IntClr];
0000808F 19 D3 11 70 [P_IntClr] = R1; //clear all interrupt requirement
00008091 09 93 A2 00 R1 = B_512HzInt+B_2HzInt+B_IoaInt;
00008093 19 D3 10 70 [P_Int] = R1; //set interrupt sources
00008095 43 F1 INT FIQ,IRQ;
//----------------------------------------------------------------------------------------
MainLoop:
00008096 41 EE JMP MainLoop;
//////////////////////////////////////////////////////////////////////////////////////////
// Functions for Main Program
//////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------//
F_InitHardWare:
00008097 40 92 R1 = 0;
00008098 19 D3 00 70 [P_IOA_Data] = R1;
0000809A 19 D3 02 70 [P_IOA_Dir] = R1;
0000809C 19 D3 14 70 [P_IoaWakeUp] = R1;
0000809E 09 93 00 80 R1 = 0x8000; //Enable IOA7 internal Pull-high resistor
000080A0 19 D3 03 70 [P_IOA_PullR] = R1;
000080A2 40 92 R1 = 0;
000080A3 19 D3 05 70 [P_IOB_Data] = R1;
000080A5 09 93 FF 00 R1 = 0x00FF;
000080A7 19 D3 07 70 [P_IOB_Dir] = R1;
000080A9 40 92 R1 = 0;
000080AA 19 D3 08 70 [P_IOC_Data] = R1;
000080AC 09 93 FF 00 R1 = 0x00FF;
000080AE 19 D3 0A 70 [P_IOC_Dir] = R1;
000080B0 40 92 R1 = 0;
000080B1 19 D3 0B 70 [P_IOD_Data] = R1;
000080B3 09 93 FF 00 R1 = 0x00FF;
000080B5 19 D3 0D 70 [P_IOD_Dir] = R1;
000080B7 4F 92 R1 = 0x000F; //IOC0 & IOC1 provide interrupt/wakeup
000080B8 19 D3 0E 70 [P_IOCD_Ctrl] = R1; // at both rising & falling edges
000080BA 40 92 R1 = 0;
000080BB 19 D3 21 70 [P_BatDet] = R1;
000080BD 19 D3 26 70 [P_AdcCtrl] = R1;
000080BF 19 D3 25 70 [P_AgcCtrl] = R1;
000080C1 19 D3 2C 70 [P_PgaInSelect] = R1;
000080C3 19 D3 1A 70 [P_Tmr_Ctrl] = R1;
000080C5 19 D3 22 70 [P_DtmfTone] = R1;
000080C7 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;
000080C9 19 D3 28 70 [P_RiDet] = R1;
000080CB 19 D3 2E 70 [P_LineDetCtrl] = R1;
000080CD 09 93 80 00 R1 = 0x0080; //Enable Auto Key Scan
000080CF 19 D3 3B 70 [P_KeyScanCtrl] = R1;
000080D1 09 93 7F 00 R1 = 0x007F; //IOA0~6 serve as Key Input port
000080D3 19 D3 3A 70 [P_KeyScanMode] = R1;
000080D5 40 92 R1 = 0;
000080D6 19 D3 3C 70 [P_KeyScanPort] = R1;
000080D8 90 9A RETF;
//----------------------------------------------------------------------------------------
F_ClrAllSRAM:
000080D9 40 9A BP = 0;
000080DA 40 92 R1 = 0;
ClrSRAMLoop:
000080DB D5 D2 [BP++] = R1;
000080DC 0D 4B FF 03 CMP BP,0x03FF;
000080DE 44 4E JNZ ClrSRAMLoop;
000080DF 90 9A RETF;
//----------------------------------------------------------------------------*/
F_InitLcd:
000080E0 40 F0 E7 80 CALL F_ClrLcd; //clear all Lcd dots
000080E2 09 93 8F 80 R1 = B_Duty+B_LcdEn + 0x000F;
000080E4 19 D3 20 70 [P_LcdCtrl] = R1;
000080E6 90 9A RETF;
F_ClrLcd:
000080E7 40 92 R1 = 0;
000080E8 0A 95 00 71 R2 = P_Seg0;
ClrLcdLoop:
000080EA D2 D2 [R2++] = R1;
000080EB 0A 45 27 71 CMP R2,P_Seg39;
000080ED 44 8E JBE ClrLcdLoop;
000080EE 90 9A RETF;
//---------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------*/
F_InitDisplay:
000080EF 40 94 R2 = 0;
000080F0 09 93 53 00 R1 = 0X53; //S
000080F2 40 F0 26 80 CALL _F_DisplayChar;
000080F4 41 94 R2 = 1;
000080F5 09 93 75 00 R1 = 0X75; //u
000080F7 40 F0 26 80 CALL _F_DisplayChar;
000080F9 42 94 R2 = 2;
000080FA 09 93 6E 00 R1 = 0X6e; //n
000080FC 40 F0 26 80 CALL _F_DisplayChar;
000080FE 43 94 R2 = 3;
000080FF 09 93 64 00 R1 = 0X64; //d
00008101 40 F0 26 80 CALL _F_DisplayChar;
00008103 45 94 R2 = 5;
00008104 09 93 54 00 R1 = 0X54; //T
00008106 40 F0 26 80 CALL _F_DisplayChar;
00008108 46 94 R2 = 6;
00008109 09 93 61 00 R1 = 0X61; //a
0000810B 40 F0 26 80 CALL _F_DisplayChar;
0000810D 47 94 R2 = 7;
0000810E 09 93 6F 00 R1 = 0X6f; //o
00008110 40 F0 26 80 CALL _F_DisplayChar;
00008112 49 94 R2 = 9;
00008113 09 93 57 00 R1 = 0X57; //W
00008115 40 F0 26 80 CALL _F_DisplayChar;
00008117 4A 94 R2 = 10;
00008118 09 93 65 00 R1 = 0X65; //e
0000811A 40 F0 26 80 CALL _F_DisplayChar;
0000811C 4B 94 R2 = 11;
0000811D 09 93 69 00 R1 = 0X69; //i
0000811F 40 F0 26 80 CALL _F_DisplayChar;
//------------------------------------------------------------------------------------------------------------
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -