📄 urw.lst
字号:
043D 9478 BSET 7
043E 9508 RET
(0070) //all peripherals are now initialized
(0071) }
(0072) /*void main()
(0073) {
(0074) int i;
(0075) unsigned char readXDIV;
(0076)
(0077) init_devices();
(0078) initLCDM(); //初始化LCD
(0079) Welcome_interface(); //显示欢迎界面
(0080) for ( i=1; i<=48;i++)
(0081) {
(0082) PORTG &= 0x04;
(0083) PORTG ^= 0X01;
(0084) PORTG ^= 0x02;
(0085) }
(0086) while(1)
(0087) {
(0088) ;// portout = 0xaa;
(0089) }
(0090) }*/
(0091) //============================
(0092) void initLCDM(void)
(0093) {
(0094) PORTF |= 0XFF;
_initLCDM:
043F 91800062 LDS R24,0x62
0441 6F8F ORI R24,0xFF
0442 93800062 STS 0x62,R24
(0095) SetCS;
0444 9A96 SBI 0x12,6
(0096) SetRD;
0445 9A95 SBI 0x12,5
(0097) SetWR;
0446 9A97 SBI 0x12,7
(0098) SetRS;
0447 9A18 SBI 0x03,0
(0099) // SetRST;
(0100) //delay_ms(30);
(0101) //ClrRST;
(0102) //delay_ms(800);
(0103) // SetRST;
(0104) //delay_ms(10);//
(0105) SdCmd(0xa0,0x07); LCD_ChkBusy(); //使能 BUSY 输出
0448 E027 LDI R18,7
0449 E030 LDI R19,0
044A EA00 LDI R16,0xA0
044B E010 LDI R17,0
044C D062 RCALL _SdCmd
044D D099 RCALL _LCD_ChkBusy
(0106) SdCmd(0x81,0x40); LCD_ChkBusy(); //by default
044E E420 LDI R18,0x40
044F E030 LDI R19,0
0450 E801 LDI R16,0x81
0451 E010 LDI R17,0
0452 D05C RCALL _SdCmd
0453 D093 RCALL _LCD_ChkBusy
(0107) SdCmd(0x00,0xCD); LCD_ChkBusy(); //Whole Chip LCD Controller Reg(Char Mode)
0454 EC2D LDI R18,0xCD
0455 E030 LDI R19,0
0456 2700 CLR R16
0457 2711 CLR R17
0458 D056 RCALL _SdCmd
0459 D08D RCALL _LCD_ChkBusy
(0108) SdCmd(0x01,0xf2); LCD_ChkBusy(); //BUSY=HiPolity, ClockOut=enable, InternalFreq=4MHz
045A EF22 LDI R18,0xF2
045B E030 LDI R19,0
045C E001 LDI R16,1
045D E010 LDI R17,0
045E D050 RCALL _SdCmd
045F D087 RCALL _LCD_ChkBusy
(0109) SdCmd(0x10,0x29); LCD_ChkBusy(); //Whole Chip Cursor Control Reg(disable cursor)
0460 E229 LDI R18,0x29
0461 E030 LDI R19,0
0462 E100 LDI R16,0x10
0463 E010 LDI R17,0
0464 D04A RCALL _SdCmd
0465 D081 RCALL _LCD_ChkBusy
(0110) SdCmd(0x11,0x10); LCD_ChkBusy(); //Distance of Words or Lines Reg(cursor=1,gap=0)
0466 E120 LDI R18,0x10
0467 E030 LDI R19,0
0468 E101 LDI R16,0x11
0469 E010 LDI R17,0
046A D044 RCALL _SdCmd
046B D07B RCALL _LCD_ChkBusy
(0111) SdCmd(0x90,0x05); LCD_ChkBusy(); //Shift Clock Control Reg(320x240,69Hz)
046C E025 LDI R18,5
046D E030 LDI R19,0
046E E900 LDI R16,0x90
046F E010 LDI R17,0
0470 D03E RCALL _SdCmd
0471 D075 RCALL _LCD_ChkBusy
(0112) SdCmd(0xf0,0xa0); LCD_ChkBusy(); //Font Control Reg
0472 EA20 LDI R18,0xA0
0473 E030 LDI R19,0
0474 EF00 LDI R16,0xF0
0475 E010 LDI R17,0
0476 D038 RCALL _SdCmd
0477 D06F RCALL _LCD_ChkBusy
(0113) SdCmd(0xf1,0x0f); LCD_ChkBusy(); //设置字型大小
0478 E02F LDI R18,0xF
0479 E030 LDI R19,0
047A EF01 LDI R16,0xF1
047B E010 LDI R17,0
047C D032 RCALL _SdCmd
047D D069 RCALL _LCD_ChkBusy
(0114) SdCmd(0x20,0x27); LCD_ChkBusy(); //Active Window Right Reg
047E E227 LDI R18,0x27
047F E030 LDI R19,0
0480 E200 LDI R16,0x20
0481 E010 LDI R17,0
0482 D02C RCALL _SdCmd
0483 D063 RCALL _LCD_ChkBusy
(0115) SdCmd(0x30,0xef); LCD_ChkBusy(); //Active Window Bottom Reg(240 duty)
0484 EE2F LDI R18,0xEF
0485 E030 LDI R19,0
0486 E300 LDI R16,0x30
0487 E010 LDI R17,0
0488 D026 RCALL _SdCmd
0489 D05D RCALL _LCD_ChkBusy
(0116) SdCmd(0x40,0x00); LCD_ChkBusy(); //Active Window Left Reg
048A 2722 CLR R18
048B 2733 CLR R19
048C E400 LDI R16,0x40
048D E010 LDI R17,0
048E D020 RCALL _SdCmd
048F D057 RCALL _LCD_ChkBusy
(0117) SdCmd(0x50,0x00); LCD_ChkBusy(); //Active Window Top Reg
0490 2722 CLR R18
0491 2733 CLR R19
0492 E500 LDI R16,0x50
0493 E010 LDI R17,0
0494 D01A RCALL _SdCmd
0495 D051 RCALL _LCD_ChkBusy
(0118) SdCmd(0x21,0x27); LCD_ChkBusy(); //Display Window Right Reg
0496 E227 LDI R18,0x27
0497 E030 LDI R19,0
0498 E201 LDI R16,0x21
0499 E010 LDI R17,0
049A D014 RCALL _SdCmd
049B D04B RCALL _LCD_ChkBusy
(0119) SdCmd(0x30,0xef); LCD_ChkBusy(); // Display Window Bottom Reg(240 duty)
049C EE2F LDI R18,0xEF
049D E030 LDI R19,0
049E E300 LDI R16,0x30
049F E010 LDI R17,0
04A0 D00E RCALL _SdCmd
04A1 D045 RCALL _LCD_ChkBusy
(0120) SdCmd(0x41,0x00); LCD_ChkBusy(); //Display Window Left Reg
04A2 2722 CLR R18
04A3 2733 CLR R19
04A4 E401 LDI R16,0x41
04A5 E010 LDI R17,0
04A6 D008 RCALL _SdCmd
04A7 D03F RCALL _LCD_ChkBusy
(0121) SdCmd(0x51,0x00); LCD_ChkBusy(); // Display Window Top Reg
04A8 2722 CLR R18
04A9 2733 CLR R19
04AA E501 LDI R16,0x51
04AB E010 LDI R17,0
04AC D002 RCALL _SdCmd
04AD D039 RCALL _LCD_ChkBusy
04AE 9508 RET
(0122) }
(0123) //====================================
(0124) //-----------------------------------
(0125) void SdCmd(uchar Command,uchar Com_Data) //send command
(0126) {
(0127) SetWR;
_SdCmd:
Com_Data --> R18
Command --> R16
04AF 9A97 SBI 0x12,7
(0128) SetRD;
04B0 9A95 SBI 0x12,5
(0129) ClrRS; //RS = 0 输入命令
04B1 B183 IN R24,0x03
04B2 7F8E ANDI R24,0xFE
04B3 B983 OUT 0x03,R24
(0130) ClrCS;
04B4 B382 IN R24,0x12
04B5 7B8F ANDI R24,0xBF
04B6 BB82 OUT 0x12,R24
(0131) PORTF = Command;
04B7 93000062 STS 0x62,R16
(0132) asm(" nop ");
04B9 0000 NOP
(0133) ClrWR; //写使能
04BA B382 IN R24,0x12
04BB 778F ANDI R24,0x7F
04BC BB82 OUT 0x12,R24
(0134) asm(" nop "); // 8MHZ 执行一条指令大约125ns
04BD 0000 NOP
(0135) asm(" nop ");
04BE 0000 NOP
(0136) SetWR;
04BF 9A97 SBI 0x12,7
(0137) SetCS;
04C0 9A96 SBI 0x12,6
(0138) //====================================
(0139) asm(" nop "); // 8MHZ 执行一条指令大约125ns
04C1 0000 NOP
(0140) asm(" nop ");
04C2 0000 NOP
(0141) SetWR;
04C3 9A97 SBI 0x12,7
(0142) SetRD;
04C4 9A95 SBI 0x12,5
(0143) ClrRS; //RS = 0 输入命令
04C5 B183 IN R24,0x03
04C6 7F8E ANDI R24,0xFE
04C7 B983 OUT 0x03,R24
(0144) ClrCS;
04C8 B382 IN R24,0x12
04C9 7B8F ANDI R24,0xBF
04CA BB82 OUT 0x12,R24
(0145) PORTF = Com_Data;
04CB 93200062 STS 0x62,R18
(0146) asm(" nop ");
04CD 0000 NOP
(0147) ClrWR; //写使能
04CE B382 IN R24,0x12
04CF 778F ANDI R24,0x7F
04D0 BB82 OUT 0x12,R24
(0148) asm(" nop "); // 8MHZ 执行一条指令大约125ns
04D1 0000 NOP
(0149) asm(" nop ");
04D2 0000 NOP
(0150) SetWR;
04D3 9A97 SBI 0x12,7
(0151) SetCS;
04D4 9A96 SBI 0x12,6
04D5 9508 RET
(0152) }
(0153) //===============================================
(0154) void SdData(uchar DData) //send display data
(0155) {
(0156) SetWR;
_SdData:
DData --> R16
04D6 9A97 SBI 0x12,7
(0157) SetRD;
04D7 9A95 SBI 0x12,5
(0158) SetRS; //RS = 1 输入数据
04D8 9A18 SBI 0x03,0
(0159) ClrCS;
04D9 B382 IN R24,0x12
04DA 7B8F ANDI R24,0xBF
04DB BB82 OUT 0x12,R24
(0160) PORTF = DData;
04DC 93000062 STS 0x62,R16
(0161) asm(" nop ");
04DE 0000 NOP
(0162) ClrWR; //写使能
04DF B382 IN R24,0x12
04E0 778F ANDI R24,0x7F
04E1 BB82 OUT 0x12,R24
(0163) asm(" nop "); // 8MHZ 执行一条指令大约125ns
04E2 0000 NOP
(0164) asm(" nop ");
04E3 0000 NOP
(0165) SetWR;
04E4 9A97 SBI 0x12,7
(0166) SetCS;
04E5 9A96 SBI 0x12,6
04E6 9508 RET
(0167) }
(0168) //====================================
(0169) //=================================
(0170) void LCD_ChkBusy(void)
(0171) {
(0172) uchar TempM = 0x08;
_LCD_ChkBusy:
TempM --> R16
04E7 E008 LDI R16,0x8
(0173) DDRG = 0X00; //将端口设为输入
04E8 2422 CLR R2
04E9 92200064 STS 0x64,R2
04EB C003 RJMP 0x04EF
(0174) while(TempM)
(0175) {
(0176) TempM = PING;
04EC 91000063 LDS R16,0x63
(0177) TempM &= 0x08; //读取DB.3位
04EE 7008 ANDI R16,0x8
04EF 2300 TST R16
04F0 F7D9 BNE 0x04EC
(0178) }
(0179) DDRG = 0XFF; //将端口设为输出
04F1 EF8F LDI R24,0xFF
04F2 93800064 STS 0x64,R24
04F4 9508 RET
_Welcome_interface:
04F5 9722 SBIW R28,2
(0180) }
(0181) //====================================
(0182) void Welcome_interface(void)
(0183) {
(0184) SdCmd(0x12,0x95);LCD_ChkBusy(); //操作图层1
04F6 E925 LDI R18,0x95
04F7 E102 LDI R16,0x12
04F8 DFB6 RCALL _SdCmd
04F9 DFED RCALL _LCD_ChkBusy
(0185) CleanScreen();
04FA D031 RCALL _CleanScreen
(0186) SdCmd(0xf1,0x1f);LCD_ChkBusy(); //设置字型大小
04FB E12F LDI R18,0x1F
04FC EF01 LDI R16,0xF1
04FD DFB1 RCALL _SdCmd
04FE DFE8 RCALL _LCD_ChkBusy
(0187) //SdCmd(0x60,0x0a);LCD_ChkBusy(); //设置光标X坐标
(0188) //SdCmd(0x70,0x4b);LCD_ChkBusy(); //设置光标Y坐标
(0189) ShowText(10,75,"金特维");
04FF E989 LDI R24,0x99
0500 E091 LDI R25,1
0501 8399 STD Y+1,R25
0502 8388 STD Y+0,R24
0503 E42B LDI R18,0x4B
0504 E030 LDI R19,0
0505 E00A LDI R16,0xA
0506 E010 LDI R17,0
0507 D040 RCALL _ShowText
(0190) SdCmd(0xf1,0x0f);LCD_ChkBusy(); //设置字型大小
0508 E02F LDI R18,0xF
0509 EF01 LDI R16,0xF1
050A DFA4 RCALL _SdCmd
050B DFDB RCALL _LCD_ChkBusy
(0191) //SdCmd(0x60,0x10);LCD_ChkBusy(); //设置光标X坐标
(0192) //SdCmd(0x70,0x55);LCD_ChkBusy(); //设置光标Y坐标
(0193) ShowText(16,85,"技术有限公司");
050C E88C LDI R24,0x8C
050D E091 LDI R25,1
050E 8399 STD Y+1,R25
050F 8388 STD Y+0,R24
0510 E525 LDI R18,0x55
0511 E030 LDI R19,0
0512 E100 LDI R16,0x10
0513 E010 LDI R17,0
0514 D033 RCALL _ShowText
(0194) SdCmd(0xf0,0xa0);LCD_ChkBusy(); //设置为简体字型
0515 EA20 LDI R18,0xA0
0516 EF00 LDI R16,0xF0
0517 DF97 RCALL _SdCmd
0518 DFCE RCALL _LCD_ChkBusy
(0195) SdCmd(0xf1,0x5f);LCD_ChkBusy(); //设置字型大小
0519 E52F LDI R18,0x5F
051A EF01 LDI R16,0xF1
051B DF93 RCALL _SdCmd
051C DFCA RCALL _LCD_ChkBusy
(0196) SdCmd(0x10,0x79);LCD_ChkBusy(); //设置光标及粗体显示
051D E729 LDI R18,0x79
051E E100 LDI R16,0x10
051F DF8F RCALL _SdCmd
0520 DFC6 RCALL _LCD_ChkBusy
(0197) //SdCmd(0x60,0x09);LCD_ChkBusy(); //设置光标X坐标
(0198) //SdCmd(0x70,0x72);LCD_ChkBusy(); //设置光标Y坐标
(0199) ShowText(9,114,"GTW - 2008");
0521 E881 LDI R24,0x81
0522 E091 LDI R25,1
0523 8399 STD Y+1,R25
0524 8388 STD Y+0,R24
0525 E722 LDI R18,0x72
0526 E030 LDI R19,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -