📄 system.lst
字号:
00008B19 19 D3 00 70 [P_IOA_Data]=R1;
00008B1B 88 90 pop R1 from [sp];
00008B1C 90 9A retf
.endp
//====================================================================
// 函 数: F_TurnOffFirstLed()
// 语 法: void F_TurnOffFirstLed(void)
// 描 述: 点亮与IOA0相连的LED
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_TurnOnFirstLed: .proc
00008B1D 88 D2 push R1 to [sp];
00008B1E 11 93 01 70 R1=[P_IOA_Buffer];
00008B20 41 A2 R1|=0x0001;
00008B21 19 D3 00 70 [P_IOA_Data]=R1;
00008B23 88 90 pop R1 from [sp];
00008B24 90 9A retf;
.endp
//====================================================================
// 函 数: SP_TurnOffFirstLed()
// 语 法: void SP_TurnOffFirstLed(void)
// 描 述: 熄灭与IOA1相连的LED
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_TurnOffSecondLed: .proc
00008B25 88 D2 push R1 to [sp];
00008B26 11 93 01 70 R1=[P_IOA_Buffer];
00008B28 09 B3 FD FF R1&=0xFFFD;
00008B2A 19 D3 00 70 [P_IOA_Data]=R1;
00008B2C 88 90 pop R1 from [sp];
00008B2D 90 9A retf;
.endp
//====================================================================
// 函 数: SP_TurnOffFirstLed()
// 语 法: void SP_TurnOffFirstLed(void)
// 描 述: 点亮与IOA1相连的LED
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_TurnOnSecondLed: .proc
00008B2E 88 D2 push R1 to [sp];
00008B2F 11 93 01 70 R1=[P_IOA_Buffer];
00008B31 42 A2 R1|=0x0002;
00008B32 19 D3 00 70 [P_IOA_Data]=R1;
00008B34 88 90 pop R1 from [sp];
00008B35 90 9A retf;
.endp
//====================================================================
// 函 数: F_InitWriteD12()
// 语 法: void F_TurnOffFirstLed(void)
// 描 述: 初始化写PDIUSBD12
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_InitWriteD12: .proc
00008B36 88 D2 push R1,R1 to [sp];
00008B37 09 93 FF FF R1 = 0xFFFF;
00008B39 19 D3 02 70 [P_IOA_Dir] = R1; // Port IOA15- IOA8: 同相高电平输出
00008B3B 19 D3 03 70 [P_IOA_Attrib] = R1; //
00008B3D 09 93 00 FF R1 = 0xFF00; //
00008B3F 19 D3 00 70 [P_IOA_Data] = R1; //
00008B41 09 93 CF 00 R1 = 0x00Cf; //
00008B43 19 D3 05 70 [P_IOB_Data] = R1; //
00008B45 88 90 pop R1,R1 from [sp];
00008B46 90 9A retf ;
.endp
//====================================================================
// 函 数: F_InitReadD12()
// 语 法: void F_InitReadD12(void)
// 描 述: 初始化读PDIUSBD12
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_InitReadD12: .PROC
00008B47 88 D2 push R1,R1 to [sp];
00008B48 09 93 FF 00 R1 = 0x00FF ;
00008B4A 19 D3 02 70 [P_IOA_Dir] = R1; // Port IOA15- IOA8: 设置为悬浮式输入input(FL)
00008B4C 09 93 FF FF R1 = 0xFFFF; //
00008B4E 19 D3 03 70 [P_IOA_Attrib] = R1; //
00008B50 40 92 R1 = 0x0000; //
00008B51 19 D3 00 70 [P_IOA_Data] = R1; //
00008B53 09 93 CF 00 R1 = 0x00Cf; //
00008B55 19 D3 05 70 [P_IOB_Data] = R1; //
00008B57 88 90 pop R1,R1 from [sp];
00008B58 90 9A retf
.ENDP
//====================================================================
// 函 数: F_ReadD12()
// 语 法: void F_ReadD12(unsigned int D_Addr)
// 描 述: 从PDIUSBD12读数据
// 参 数: D_Addr:为偶地址0xff02
// 返回值: R1
//=====================================================================
_F_ReadD12: .PROC
00008B59 88 DA push bp to [sp];
00008B5A 08 0B 01 00 bp = sp + 1 ;
00008B5C 03 92 R1 = [bp+3] ; // D12 Address
00008B5D 40 F0 61 8B call F_ReadD12; // R1: return value
00008B5F 88 98 pop bp from [sp] ;
00008B60 90 9A retf ;
.ENDP
F_ReadD12:
00008B61 90 D6 push R2,r3 to [sp];
00008B62 59 93 R1 = R1 lsl 4; // move 02 to IOA8-IOA15
00008B63 59 93 R1 = R1 lsl 4;
00008B64 19 D3 00 70 [P_IOA_Data] = R1; // 送偶地址到D12
00008B66 0B 97 EF 00 R3 = 0x00EF; // CS_N=0, ALE=IOB8=1,WR_N=1,RD_N=1;RESET_N=1,INT_N=1
00008B68 1B D7 05 70 [P_IOB_Data] = R3;
00008B6A 09 93 CF 00 R1=0x00Cf;
00008B6C 19 D3 05 70 [P_IOB_Data] = R1; // CS_N=0,ALE=0,WR_N=1,RD_N=1;RESET_N=1,INT_N=1
00008B6E 09 93 4F 00 R1=0x004f;
00008B70 19 D3 05 70 [P_IOB_Data] = R1; // CS_N=0,ALE=0,WR_N=1,RD_N=0;RESET_N=1,INT_N=1
00008B72 00 EE nop;
00008B73 11 93 00 70 R1 = [P_IOA_Data]; // Get data
00008B75 79 93 R1 = R1 lsr 4; // Prepare high 8 bits Addr. to low 8 bits
00008B76 79 95 R2 = R1 lsr 4; // Get low byte data
00008B77 02 93 R1=R2; // R1 save ruturn value
00008B78 0A 95 CF 00 R2 = 0x00CF; // CS_N=0,ALE=0,WR_N=1,RD_N=1 ;RESET_N=1,INT_N=1
00008B7A 1A D5 06 70 [P_IOB_Buffer] = R2; //
00008B7C 90 92 pop R2,r3 from [sp]; // don't pop R1(return value)
00008B7D 90 9A retf ;
//===================================================================================================
// 函 数: F_WriteCmdOrDataToD12()
// 语 法: void F_WriteCmdOrDataToD12(unsigned int D_or_C_Addr,unsigned int Data_or_Command)
// 描 述: 向PDIUSBD12写数据或命令
// 参 数: D_or_C_Addr:地址参数;Data_or_Command:命令或数据参数
// 返回值: 无
//===================================================================================================
_F_WriteCmdOrDataToD12: .PROC
00008B7E 88 DA push bp to [sp] ;
00008B7F 08 0B 01 00 bp = sp + 1;
00008B81 90 D4 push R1,R2 to [sp];
00008B82 03 92 R1 = [bp+3]; // Address
00008B83 04 94 R2 = [bp+4] ; // Data
00008B84 40 F0 89 8B call F_WriteCmdOrDataToD12;
00008B86 90 90 pop R1,R2 from [sp];
00008B87 88 98 pop bp from [sp] ;
00008B88 90 9A retf ;
.ENDP
F_WriteCmdOrDataToD12:
00008B89 98 D6 push R1,r3 to [sp];
00008B8A 59 93 R1 = R1 lsl 4;
00008B8B 59 93 R1 = R1 lsl 4;
00008B8C 5A 95 R2 = R2 lsl 4; // shift low 8 bits data to high 8 bits
00008B8D 5A 95 R2 = R2 lsl 4; //
00008B8E 19 D3 00 70 [P_IOA_Data] = R1; // move 02 or 03 Addr to IOA8-IOA15
00008B90 09 93 EF 00 R1=0x00EF; // CS_N=0,ALE=IOA7=1,WR_N=1,RD_N=1,RESET_N=1,INT_N=1
00008B92 19 D3 05 70 [P_IOB_Data] = R1; // ALE=1
00008B94 09 93 CF 00 R1=0x00CF; // CS_N=0,ALE=IOA7=0,WR_N=1,RD_N=1;RESET_N=1,INT_N=1
00008B96 19 D3 05 70 [P_IOB_Data] = R1; // 在ALE 下降沿的时候,D12锁定地址;
00008B98 09 93 8F 00 R1=0x008F;
00008B9A 1A D5 01 70 [P_IOA_Buffer] = R2; // 准备数据写入D12
00008B9C 19 D3 05 70 [P_IOB_Data] = R1; // CS_N=0,ALE=0,WR_N=0,RD_N=1;RESET_N=1,INT_N=1
00008B9E 00 EE nop;
00008B9F 09 93 CF 00 R1=0x00CF; // CS_N=0,ALE=0,WR_N=1,RD_N=1;
00008BA1 19 D3 05 70 [P_IOB_Data] = R1;
00008BA3 98 90 pop R1,r3 from [sp];
00008BA4 90 9A retf;
.PUBLIC _F_Clear_WatchDog
_F_Clear_WatchDog:
00008BA5 88 D2 PUSH R1 TO [SP];
00008BA6 41 92 R1=0x0001;
00008BA7 19 D3 12 70 [P_Watchdog_Clear]=R1;
00008BA9 88 90 POP R1 FROM [SP];
00008BAA 90 9A RETF;
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -