📄 tft.lst
字号:
__text_start:
__start:
0040 E5CF LDI R28,0x5F
0041 E0D4 LDI R29,4
0042 BFCD OUT 0x3D,R28
0043 BFDE OUT 0x3E,R29
0044 51C0 SUBI R28,0x10
0045 40D0 SBCI R29,0
0046 EA0A LDI R16,0xAA
0047 8308 STD Y+0,R16
0048 2400 CLR R0
0049 E8EC LDI R30,0x8C
004A E0F0 LDI R31,0
004B E011 LDI R17,1
004C 3AE0 CPI R30,0xA0
004D 07F1 CPC R31,R17
004E F011 BEQ 0x0051
004F 9201 ST R0,Z+
0050 CFFB RJMP 0x004C
0051 8300 STD Z+0,R16
0052 E5E4 LDI R30,0x54
0053 E0F0 LDI R31,0
0054 E6A0 LDI R26,0x60
0055 E0B0 LDI R27,0
0056 E010 LDI R17,0
0057 38E0 CPI R30,0x80
0058 07F1 CPC R31,R17
0059 F021 BEQ 0x005E
005A 95C8 LPM
005B 9631 ADIW R30,1
005C 920D ST R0,X+
005D CFF9 RJMP 0x0057
005E 940E0061 CALL _main
_exit:
0060 CFFF RJMP _exit
_main:
0061 9723 SBIW R28,3
FILE: E:\公司文件\OSDDEM~1\main\mainos.c
(0001) /***********************************************************
(0002) TFT信息发布在MEGA16上的移植
(0003)
(0004) 2007年05月06日
(0005)
(0006)
(0007)
(0008) *************************************************************/
(0009)
(0010)
(0011) #include "config.h"
(0012)
(0013)
(0014)
(0015)
(0016)
(0017)
(0018) void main(void){
(0019)
(0020) MainScreen_Init(B_COLOR_BLUE);
0062 E001 LDI R16,1
0063 940E0309 CALL _MainScreen_Init
(0021)
(0022) Tft_Buf_Clear();
0065 940E008A CALL _Tft_Buf_Clear
(0023) Tft_Buf_XY_Update(1,6,"AVR与虚拟仪器",13);
0067 E08D LDI R24,0xD
0068 838A STD Y+2,R24
0069 E78C LDI R24,0x7C
006A E090 LDI R25,0
006B 8399 STD Y+1,R25
006C 8388 STD Y+0,R24
006D E026 LDI R18,6
006E E001 LDI R16,1
006F 940E00D0 CALL _Tft_Buf_XY_Update
(0024) Tft_Buf_XY_Update(3,3,"www.AVRVI.com",13);
0071 E08D LDI R24,0xD
0072 838A STD Y+2,R24
0073 E68E LDI R24,0x6E
0074 E090 LDI R25,0
0075 8399 STD Y+1,R25
0076 8388 STD Y+0,R24
0077 E023 LDI R18,3
0078 E003 LDI R16,3
0079 940E00D0 CALL _Tft_Buf_XY_Update
(0025) Tft_Buf_XY_Update(5,3,"0531-80870158",13);
007B E08D LDI R24,0xD
007C 838A STD Y+2,R24
007D E680 LDI R24,0x60
007E E090 LDI R25,0
007F 8399 STD Y+1,R25
0080 8388 STD Y+0,R24
0081 E023 LDI R18,3
0082 E005 LDI R16,5
0083 940E00D0 CALL _Tft_Buf_XY_Update
(0026) Tft_Show_Update();
0085 940E0146 CALL _Tft_Show_Update
(0027)
(0028) while(1){
0087 CFFF RJMP 0x0087
0088 9623 ADIW R28,3
0089 9508 RET
_Tft_Buf_Clear:
i --> R20
008A 940E037B CALL push_gset1
FILE: E:\公司文件\OSDDEM~1\MB90092\MB90092.C
(0001) /*********************************************************************************************************
(0002) ** MB90092 OSD 驱动程序
(0003) ** (c) Copyright 2005-2006, limaokui
(0004) ** All Rights Reserved
(0005) **
(0006) ** V1.0.0
(0007) **
(0008) **
(0009) **--------------文件信息--------------------------------------------------------------------------------
(0010) **文 件 名:MB90092.c
(0011) **创 建 人: 李茂奎
(0012) **最后修改日期: 2005年12月13日
(0013) **描 述: MB90092 OSD 驱动程序
(0014) **
(0015) **--------------历史版本信息----------------------------------------------------------------------------
(0016) ** 创建人: 李茂奎
(0017) ** 版 本: V1.00
(0018) ** 日 期: 2005年11月13日
(0019) ** 描 述: 原始版本
(0020) **
(0021) **------------------------------------------------------------------------------------------------------
(0022) ** 修改人: 李茂奎
(0023) ** 版 本: V1.10
(0024) ** 日 期: 2005年11月17日
(0025) ** 描 述:
(0026) **
(0027) **--------------当前版本修订------------------------------------------------------------------------------
(0028) ** 修改人:
(0029) ** 日 期:
(0030) ** 描 述:
(0031) **
(0032) **------------------------------------------------------------------------------------------------------
(0033) *********************************************************************************************************/
(0034)
(0035)
(0036) #include "config.h"
(0037) void M90092_DisRow(uint8 *CChar,uint8 Row,uint8 len,uint8 charsize, uint8 b_color,uint8 c_color);
(0038) void Delay_ms (uint16 ms);
(0039) void MB90092_WriteByte (uint8 _data);
(0040) void MB90092_ClearXY (uint8 x,uint8 y);
(0041) void MB90092_ClearRow (uint8 y);
(0042) void MB90092_ClearScreen (void);
(0043) void MB90092_DisChar (uint8 x,uint8 y,uint16 addr,uint8 mul,uint8 bc,uint8 cc,uint8 ff);
(0044) void MB90092_DisColor (uint8 y);
(0045)
(0046) uint16 CharToAddr(uint8 *CChar);
(0047)
(0048) uint8 synchronization=SYN_INTERNAL;
(0049) uint16 Lcd_Show_Buf[Lcd_Lines][Lcd_Characters]; //显示缓冲区
(0050) uint8 Tft_Enable_Show_Flag=FALSE;
(0051)
(0052)
(0053) /*********************************************************************************************************
(0054) ** 函数名称:Tft_Buf_Clear
(0055) ** 功能描述: 清空显示缓冲区
(0056) ** 输 入:
(0057) **
(0058) ** 全局变量: Lcd_Show_Buf : 显示缓冲区
(0059) ** 调用模块: 无
(0060) ** 说明:
(0061) ** 注意:
(0062) ** 日 期: 2005年12月23日
(0063) ********************************************************************************************************/
(0064)
(0065) void Tft_Buf_Clear(void)
(0066) {
(0067) uint8 i;
(0068) for (i=0;i<Lcd_Lines;i++)
008C 2744 CLR R20
008D C005 RJMP 0x0093
(0069) {
(0070) WDR(); //喂狗
008E 95A8 WDR
(0071) Tft_Buf_Line_Clear(i);
008F 2F04 MOV R16,R20
0090 D00A RCALL _Tft_Buf_Line_Clear
(0072) WDR(); //喂狗
0091 95A8 WDR
0092 9543 INC R20
0093 3046 CPI R20,6
0094 F3C8 BCS 0x008E
(0073) }
(0074) Tft_Enable_Show_Flag=TRUE;
0095 E081 LDI R24,1
0096 9380008B STS Tft_Enable_Show_Flag,R24
0098 940E037E CALL pop_gset1
009A 9508 RET
_Tft_Buf_Line_Clear:
p --> R20
i --> R22
line --> R16
009B 940E0379 CALL push_gset2
(0075) }
(0076)
(0077) /*********************************************************************************************************
(0078) ** 函数名称:Tft_Buf_Line_Clear
(0079) ** 功能描述: 清空缓冲区的一行
(0080) ** 输 入: line:所清行号
(0081) **
(0082) ** 全局变量: Lcd_Show_Buf : 显示缓冲区
(0083) ** 调用模块: 无
(0084) ** 说明:
(0085) ** 注意:
(0086) ** 日 期: 2005年12月23日
(0087) ********************************************************************************************************/
(0088)
(0089) void Tft_Buf_Line_Clear(uint8 line)
(0090) {
(0091) uint8 i;
(0092) uint16 *p;
(0093) p=(uint16 *)&Lcd_Show_Buf[line];
009D E28E LDI R24,0x2E
009E 9F80 MUL R24,R16
009F 01A0 MOVW R20,R0
00A0 E88C LDI R24,0x8C
00A1 E090 LDI R25,0
00A2 0F48 ADD R20,R24
00A3 1F59 ADC R21,R25
(0094) for(i=0;i<Lcd_Characters;i++)
00A4 2766 CLR R22
00A5 C008 RJMP 0x00AE
(0095) {
(0096) WDR(); //喂狗
00A6 95A8 WDR
(0097) *p++=0;
00A7 2422 CLR R2
00A8 2433 CLR R3
00A9 01FA MOVW R30,R20
00AA 9221 ST R2,Z+
00AB 9231 ST R3,Z+
00AC 01AF MOVW R20,R30
00AD 9563 INC R22
00AE 3167 CPI R22,0x17
00AF F3B0 BCS 0x00A6
(0098) }
(0099) Tft_Enable_Show_Flag=TRUE;
00B0 E081 LDI R24,1
00B1 9380008B STS Tft_Enable_Show_Flag,R24
00B3 940E0367 CALL pop_gset2
00B5 9508 RET
_Tft_Buf_XY_Clear:
p --> R20
row --> R18
line --> R16
00B6 940E037B CALL push_gset1
(0100) }
(0101) void Tft_Buf_XY_Clear(uint8 line,uint8 row)
(0102) {
(0103) uint16 *p;
(0104) WDR(); //喂狗
00B8 95A8 WDR
(0105) p=(uint16 *)&Lcd_Show_Buf[line]+row;
00B9 E28E LDI R24,0x2E
00BA 9F80 MUL R24,R16
00BB 0110 MOVW R2,R0
00BC E88C LDI R24,0x8C
00BD E090 LDI R25,0
00BE 0E28 ADD R2,R24
00BF 1E39 ADC R3,R25
00C0 E082 LDI R24,2
00C1 9F82 MUL R24,R18
00C2 01A0 MOVW R20,R0
00C3 0D42 ADD R20,R2
00C4 1D53 ADC R21,R3
(0106) *p=0;
00C5 2422 CLR R2
00C6 2433 CLR R3
00C7 01FA MOVW R30,R20
00C8 8231 STD Z+1,R3
00C9 8220 STD Z+0,R2
(0107) Tft_Enable_Show_Flag=TRUE;
00CA E081 LDI R24,1
00CB 9380008B STS Tft_Enable_Show_Flag,R24
00CD 940E037E CALL pop_gset1
00CF 9508 RET
_Tft_Buf_XY_Update:
p --> R20
i --> R22
len --> R10
str --> R12
row --> R20
line --> R22
00D0 940E0375 CALL push_gset4
00D2 2F42 MOV R20,R18
00D3 2F60 MOV R22,R16
00D4 84C8 LDD R12,Y+8
00D5 84D9 LDD R13,Y+9
00D6 84AA LDD R10,Y+10
(0108) }
(0109) /*********************************************************************************************************
(0110) ** 函数名称:Tft_Buf_Line_Update
(0111) ** 功能描述: 将字符送入指定行列缓冲区
(0112) ** 输 入:
(0113) **
(0114) ** 全局变量: Lcd_Show_Buf : 显示缓冲区
(0115) ** 调用模块: 无
(0116) ** 说明:
(0117) ** 注意:
(0118) ** 日 期: 2005年12月23日
(0119) ********************************************************************************************************/
(0120) void Tft_Buf_XY_Update(uint8 line,uint8 row,uint8 *str,uint8 len)
(0121) {
(0122) uint8 i;
(0123) uint16 *p;
(0124) p=(uint16 *)&Lcd_Show_Buf[line]+row;
00D7 E28E LDI R24,0x2E
00D8 9F86 MUL R24,R22
00D9 0110 MOVW R2,R0
00DA E88C LDI R24,0x8C
00DB E090 LDI R25,0
00DC 0E28 ADD R2,R24
00DD 1E39 ADC R3,R25
00DE E082 LDI R24,2
00DF 9F84 MUL R24,R20
00E0 01A0 MOVW R20,R0
00E1 0D42 ADD R20,R2
00E2 1D53 ADC R21,R3
(0125) for(i=0;i<len;i++)
00E3 2766 CLR R22
00E4 C014 RJMP 0x00F9
(0126) {
(0127) WDR(); //喂狗
00E5 95A8 WDR
(0128) *p++=CharToAddr(str);
00E6 0186 MOVW R16,R12
00E7 D0CA RCALL _CharToAddr
00E8 01FA MOVW R30,R20
00E9 9301 ST R16,Z+
00EA 9311 ST R17,Z+
00EB 01AF MOVW R20,R30
(0129) if (*str > 127)
00EC E78F LDI R24,0x7F
00ED 01F6 MOVW R30,R12
00EE 8020 LDD R2,Z+0
00EF 1582 CP R24,R2
00F0 F420 BCC 0x00F5
(0130) str+=2;
00F1 01CF MOVW R24,R30
00F2 9602 ADIW R24,2
00F3 016C MOVW R12,R24
00F4 C003 RJMP 0x00F8
(0131) else
(0132) str++;
00F5 01C6 MOVW R24,R12
00F6 9601 ADIW R24,1
00F7 016C MOVW R12,R24
00F8 9563 INC R22
00F9 156A CP R22,R10
00FA F350 BCS 0x00E5
(0133) }
(0134) Tft_Enable_Show_Flag=TRUE;
00FB E081 LDI R24,1
00FC 9380008B STS Tft_Enable_Show_Flag,R24
00FE 940E036D CALL pop_gset4
0100 9508 RET
_Tft_Buf_Update:
p --> R20
i --> R22
j --> R14
len --> R10
Buf --> R12
0101 940E0373 CALL push_gset5
0103 2EA2 MOV R10,R18
0104 0168 MOVW R12,R16
(0135) }
(0136)
(0137)
(0138)
(0139)
(0140)
(0141)
(0142) /*********************************************************************************************************
(0143) ** 函数名称:Tft_Show_Sch
(0144) ** 功能描述: 显示调度程序,完成显示缓冲区的刷新,并发显示刷新信号
(0145) ** 输 入: Buf:显示数据指针
(0146) ** Len:显示数据长度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -