📄 splc501hardware.lst
字号:
0000CC1A 59 93 R1 = R1 LSl 4;
0000CC1B 59 93 R1 = R1 LSl 4;
0000CC1C 09 B3 00 0F R1 &= 0x0F00;
0000CC1E 88 D2 push r1,r1 to [sp]
0000CC1F 11 93 00 70 r1=[P_IO_Data_Data]
// r1&=0x00ff
0000CC21 88 D4 push r2 to [sp]
0000CC22 0A 95 00 FF r2=C_DataBus
0000CC24 0A 85 FF FF r2^=0xffff
0000CC26 02 B3 r1&=r2
0000CC27 88 92 pop r2 from [sp]
0000CC28 19 D3 00 70 [P_IO_Data_Data]=r1
0000CC2A 88 90 pop r1,r1 from [sp]
0000CC2B 11 A3 00 70 r1|=[P_IO_Data_Data]
.if C_BusHighLow
.else
R1 = R1 lsr 4;
R1 = R1 lsr 4;
.endif
0000CC2D 19 D3 00 70 [P_IO_Data_Data]=r1
0000CC2F 40 F0 63 CC CALL F_Send_data
0000CC31 88 94 pop r3 from [sp]
0000CC32 88 90 pop r1 from [sp]
0000CC33 90 9A RETF;
//////////////////////////////////////////////////////////////////////////////
//Filename : F_Fill_All_LCD_Value
//Function : Clear all LCD dots
//Input : Value (R3 : b0~7)
//Output : None
//Destroy : R1,R2
//////////////////////////////////////////////////////////////////////////////
.public _Fill_All_LCD_Value
.public F_Fill_All_LCD_Value
_Fill_All_LCD_Value:
F_Fill_All_LCD_Value:
0000CC34 0B B7 00 FF R3 &= 0xFF00; //Filling value
0000CC36 40 92 R1 = 0x0000; //Page No. = 0
.if C_BusHighLow
.else
R3 = R3 lsr 4;
R3 = R3 lsr 4;
.endif
L_Fill_Page_Loop:
0000CC37 98 D6 PUSH R1,R3 TO [SP]; //Store R1 temporarily
0000CC38 40 F0 D5 CB CALL F_Set_LCD_Page_No; //Page No. = 0
0000CC3A 40 94 R2 = 0x0000; //Column address (00H ~ 63H)
0000CC3B 40 F0 FE CB CALL F_Set_LCD_Column_Addr; //Column Addr. = 0
0000CC3D 98 90 POP R1,R3 FROM [SP]; //Restore R1
0000CC3E 0A 95 84 00 R2 = 0x0084; //Max. column address +1
L_Fill_Column_Loop:
0000CC40 88 D6 push r3,r3 to[sp]
0000CC41 13 97 00 70 r3=[P_IO_Data_Data]
0000CC43 88 D4 push r2 to [sp]
0000CC44 0A 95 00 FF r2=C_DataBus
0000CC46 0A 85 FF FF r2^=0xffff
0000CC48 02 B7 r3&=r2
0000CC49 88 92 pop r2 from [sp]
0000CC4A 1B D7 00 70 [P_IO_Data_Data]=r3
0000CC4C 88 94 pop r3,r3 from [sp]
0000CC4D 13 A7 00 70 r3|=[P_IO_Data_Data]
0000CC4F 1B D7 00 70 [P_IO_Data_Data]=r3
0000CC51 88 D6 PUSH R3,R3 TO [SP];
0000CC52 50 96 r3=C_AOP_Pin //0x2000
0000CC53 13 A7 05 70 r3|=[P_IO_Control_Data]
0000CC55 1B D7 05 70 [P_IO_Control_Data]=r3
0000CC57 40 F0 63 CC CALL F_Send_data ////xxxxxxxx
0000CC59 88 94 POP R3,R3 FROM [SP]
0000CC5A 41 24 R2 -= 0x0001; //Next column address
0000CC5B 5C 4E JNZ L_Fill_Column_Loop; //End Page ?
0000CC5C 41 02 R1 += 0x0001;
0000CC5D 48 42 CMP R1,0x0008; //Next page address
0000CC5E 68 4E JNE L_Fill_Page_Loop;
0000CC5F 41 92 R1 = 0x0001;
0000CC60 19 D3 12 70 [P_Watchdog_Clear] = R1; // reset watchdog
0000CC62 90 9A RETF;
//////////////////////////////////////////////////////////////////////////////
//destory: r3
//////////////////////////////////////////////////////////////////////
.public _Send_data
.public F_Send_data
F_Send_data:
_Send_data: .proc
0000CC63 13 97 05 70 r3=[P_IO_Control_Data]
0000CC65 0B A7 40 00 r3|=C_EP_Pin //0x4000
0000CC67 1B D7 05 70 [P_IO_Control_Data]=r3
0000CC69 88 D2 push r1 to [sp]
0000CC6A 09 93 40 00 r1=C_EP_Pin
0000CC6C 09 83 FF FF r1^=0xffff
0000CC6E 01 B7 r3&=r1 //0xbfff
0000CC6F 88 90 pop r1 from [sp]
0000CC70 1B D7 05 70 [P_IO_Control_Data]=r3
0000CC72 88 D2 push r1 to [sp]
0000CC73 50 92 r1=C_AOP_Pin
0000CC74 09 83 FF FF r1^=0xffff
0000CC76 01 B7 r3&=r1
0000CC77 60 92 r1=C_RWP_Pin
0000CC78 09 83 FF FF r1^=0xffff
0000CC7A 01 B7 r3&=r1
0000CC7B 88 90 pop r1 from [sp]
// r3&=0x1fff
0000CC7C 1B D7 05 70 [P_IO_Control_Data]=r3
0000CC7E 90 9A retf
.endp
//////////////////////////////////////////////////////////////////////////////
F_Delay_Bus_Time:
0000CC7F 90 9A RETF;
//////////////////////////////////////////////////////////////////////////////
//Filename : F_Read_Lcd_data
//Function : frist read appoint data on lcd
//Input :
//Output : r3
//Destroy : R1,r3
//////////////////////////////////////////////////////////////////////////////
.public _Read_Lcd_data
.public F_Read_Lcd_data
_Read_Lcd_data: .proc
F_Read_Lcd_data:
0000CC80 11 93 02 70 r1=[P_IO_Data_Dir]
0000CC82 88 D4 push r2 to [sp]
0000CC83 0A 95 00 FF r2=C_DataBus
0000CC85 0A 85 FF FF r2^=0xffff
0000CC87 02 B3 r1&=r2
0000CC88 88 92 pop r2 from [sp]
// r1&=0x00ff
0000CC89 19 D3 02 70 [P_IO_Data_Dir]=r1
// r1=[P_IOA_Attrib]
// r1|=0xff00
// [P_IOA_Attrib]=r1
// r3=0x00fd
0000CC8B 13 97 05 70 r3=[P_IO_Control_Data]
// r3|=0xb000
0000CC8D 50 A6 r3|=C_AOP_Pin
0000CC8E 60 A6 r3|=C_RWP_Pin
0000CC8F 09 93 40 00 r1=C_EP_Pin
0000CC91 09 83 FF FF r1^=0xffff
0000CC93 01 B7 r3&=r1
0000CC94 1B D7 05 70 [P_IO_Control_Data]=r3
0000CC96 40 F0 63 CC CALL F_Send_data //Dummy read after setting column address immediately
// r3=0x00fd
0000CC98 13 97 05 70 r3=[P_IO_Control_Data]
0000CC9A 50 A6 r3|=C_AOP_Pin
0000CC9B 60 A6 r3|=C_RWP_Pin
0000CC9C 09 93 40 00 r1=C_EP_Pin
0000CC9E 09 83 FF FF r1^=0xffff
0000CCA0 01 B7 r3&=r1
0000CCA1 1B D7 05 70 [P_IO_Control_Data]=r3
0000CCA3 40 F0 63 CC CALL F_Send_data //Read Data
0000CCA5 13 97 00 70 R3 = [P_IO_Data_Data] //Get it
.if C_BusHighLow
.else
R3 = R3 lsl 4;
R3 = R3 lsl 4;
.endif
0000CCA7 11 93 02 70 r1=[P_IO_Data_Dir]
0000CCA9 09 A3 00 FF r1|=C_DataBus
0000CCAB 19 D3 02 70 [P_IO_Data_Dir]=r1
0000CCAD 90 9A retf
.endp
//////////////////////////////////////////////////////////////////////
//input: r3
//destory: r3
//////////////////////////////////////////////////////////////////////
.PUBLIC F_Display_point
//_Display_point: .proc
F_Display_point:
0000CCAE 00 EE nop
0000CCAF 00 EE nop
0000CCB0 88 D6 push r3,r3 to[sp]
0000CCB1 13 97 00 70 r3=[P_IO_Data_Data]
0000CCB3 0A 95 00 FF r2=C_DataBus
0000CCB5 0A 85 FF FF r2^=0xffff
0000CCB7 02 B7 r3&=r2
0000CCB8 1B D7 00 70 [P_IO_Data_Data]=r3
0000CCBA 88 94 pop r3,r3 from [sp]
0000CCBB 5B 97 r3=r3 lsl 0x04
0000CCBC 5B 97 r3=r3 lsl 0x04
// R3 |= 0x00f4; //Write data
.if C_BusHighLow
.else
R3 = R3 lsr 4;
R3 = R3 lsr 4;
.endif
0000CCBD 13 A7 00 70 r3|=[P_IO_Data_Data]
0000CCBF 1B D7 00 70 [P_IO_Data_Data]=r3
0000CCC1 13 97 05 70 r3=[P_IO_Control_Data]
0000CCC3 50 A6 r3|=C_AOP_Pin //0x2000
0000CCC4 1B D7 05 70 [P_IO_Control_Data]=r3
0000CCC6 40 F0 63 CC CALL F_Send_data
0000CCC8 90 9A retf
//////////////////////////////////////////////////////////////////////////////
//Filename : F_Init_IO
//Function : Intialize I/O
//Input : None
//Output : None
//Destory : R1
//////////////////////////////////////////////////////////////////////////////
.public F_Init_IO
.public _Init_IO
_Init_IO:
F_Init_IO: .proc
0000CCC9 11 93 02 70 r1=[P_IO_Data_Dir]
0000CCCB 09 A3 00 FF r1|=C_DataBus
0000CCCD 19 D3 02 70 [P_IO_Data_Dir]=r1
0000CCCF 11 93 03 70 r1=[P_IO_Data_Attrib]
0000CCD1 09 A3 00 FF r1|=C_DataBus
0000CCD3 19 D3 03 70 [P_IO_Data_Attrib]=r1
0000CCD5 11 93 00 70 r1=[P_IO_Data_Data]
0000CCD7 0A 95 00 FF r2=C_DataBus
0000CCD9 0A 85 FF FF r2^=0xffff
0000CCDB 02 B3 r1&=r2
0000CCDC 19 D3 00 70 [P_IO_Data_Data]=r1 //Initial porta
0000CCDE 11 93 07 70 r1=[P_IO_Control_Dir]
0000CCE0 50 A2 r1|=C_AOP_Pin
0000CCE1 09 A3 40 00 r1|=C_EP_Pin
0000CCE3 60 A2 r1|=C_RWP_Pin
0000CCE4 19 D3 07 70 [P_IO_Control_Dir]=r1
0000CCE6 12 95 08 70 r2=[P_IO_Control_Attrib]
0000CCE8 01 A5 r2|=r1
0000CCE9 1A D5 08 70 [P_IO_Control_Attrib]=r2
0000CCEB 12 95 05 70 r2=[P_IO_Control_Data]
0000CCED 09 83 FF FF r1^=0xffff
0000CCEF 01 B5 r2&=r1
0000CCF0 19 D3 05 70 [P_IO_Control_Data]=r1
0000CCF2 90 9A RETF
.endp
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -