📄 lcd1286418.lst
字号:
__text_start:
__start:
4BA EFCF LDI R28,0xFF
4BB E1D0 LDI R29,0x10
4BC BFCD OUT 0x3D,R28
4BD BFDE OUT 0x3E,R29
4BE 53C2 SUBI R28,0x32
4BF 40D0 SBCI R29,0
4C0 EA0A LDI R16,0xAA
4C1 8308 STD Y+0,R16
4C2 2400 CLR R0
4C3 E7ED LDI R30,0x7D
4C4 E0F1 LDI R31,1
4C5 E015 LDI R17,5
4C6 38E5 CPI R30,0x85
4C7 07F1 CPC R31,R17
4C8 F011 BEQ 0x04CB
4C9 9201 ST R0,Z+
4CA CFFB RJMP 0x04C6
4CB 8300 STD Z+0,R16
4CC EFE6 LDI R30,0xF6
4CD E0F8 LDI R31,0x8
4CE E0A0 LDI R26,0
4CF E0B1 LDI R27,1
4D0 E019 LDI R17,0x9
4D1 E000 LDI R16,0
4D2 BF0B OUT 0x3B,R16
4D3 37E3 CPI R30,0x73
4D4 07F1 CPC R31,R17
4D5 F021 BEQ 0x04DA
4D6 95C8 LPM
4D7 9631 ADIW R30,1
4D8 920D ST R0,X+
4D9 CFF9 RJMP 0x04D3
4DA D001 RCALL _main
_exit:
4DB CFFF RJMP _exit
_main:
a --> Y,+7
temp1 --> Y,+7
temp --> Y,+6
4DC 972A SBIW R28,0xA
FILE: F:\CODE\LCD1286418\main.c
(0001) /***********************************************************************************************
(0002) * FILE NAME: main.c
(0003) * PURPOSE: Main Function Of Firmware
(0004) * DESCRIPTION:
(0005) * DEVELOPMENT HISTORY:
(0006) * Date Author Release Description Of Change
(0007) * -------- ------------ --------- ------------------------------------------------
(0008) * 08-04-11 XuGuohong 1.0 Testing Edition
(0009) /**********************************************************************************************/
(0010)
(0011) /* Include Global Parameters */
(0012) #include <iom128v.h>
(0013) #include "avr.h"
(0014)
(0015) /* Include Global Parameters */
(0016)
(0017) /* Declare Prototypes */
(0018)
(0019) /***************************************
(0020) * FUNCTION NAME: Main
(0021) * DESCRIPTION:
(0022) /***************************************/
(0023) void main(void)
(0024) {
(0025) float temp;
(0026) unsigned char temp1;
(0027) unsigned char a;
(0028) SPL=0XFF; /* Stack Initialization */
4DD EF8F LDI R24,0xFF
4DE BF8D OUT 0x3D,R24
(0029) SPH=0X10;
4DF E180 LDI R24,0x10
4E0 BF8E OUT 0x3E,R24
(0030) LcdInit(); /* Lcd Initialization */
4E1 D01C RCALL _LcdInit
4E2 C00F RJMP 0x04F2
(0031)
(0032)
(0033)
(0034) // LcdDisplayDot(3,0,1);
(0035) // LcdDisplayDot(70,1,1);
(0036) // LcdDisplaySeg(2,2,0XFF);
(0037) // GuiDrawLine(127, 20, 0, 63, 1);
(0038) // GuiDrawCircle(70,20,13, 1);
(0039) // GuiDrawSquare(50,50,5,5,1);
(0040)
(0041) // 画立
(0042) //for(temp=0;temp<10;temp=temp+1)
(0043) //{
(0044) // GuiDrawCircle(63+temp,20+temp,15-temp, 1);
(0045) //}
(0046)
(0047) // for(temp=0;temp<10;temp=temp+2)
(0048) // {
(0049) // GuiDrawCircle(100+temp,15+temp,10, 1);
(0050) // }
(0051)
(0052) // 画立方体
(0053) // GuiDrawSquare(5,5,30,30,1);
(0054) // GuiDrawSquare(12,12,37,37,1);
(0055)
(0056) // GuiDrawLine(5, 5, 12, 12, 1);
(0057) // GuiDrawLine(30, 30, 37, 37, 1);
(0058)
(0059) /// GuiDrawLine(5, 30, 12, 37, 1);
(0060) //GuiDrawLine(30, 5, 37, 12, 1);
(0061)
(0062) //GuiDisCharF3(0,0,'1',1);
(0063) //GuiDisCharF3(20,0,'2',1);
(0064) //GuiDisCharF3(0,7,'3',1);
(0065) //GuiDisCharF3(20,7,'4',1);
(0066)
(0067)
(0068) /*
(0069) while(1)
(0070) {
(0071)
(0072)
(0073) //GuiDisRoolStringF3(0,64,7,"Multi-parameter Water Quality Analyzer",1);
(0074) DisStartLogo();
(0075) LcdClr();
(0076)
(0077) GuiDisMainMenu();
(0078) GuiDisStringF3(8,7,"17:59",1);
(0079) GuiDisTemp(0,7,-10);
(0080)
(0081) GuiDisUsb(87,7);
(0082) GuiDisAcin(103,7);
(0083) GuiDisBattery(113,7,6);
(0084)
(0085) GuiDisShortIcon(111,0,0);
(0086) GuiDisMenuIcon(1,0,0);
(0087)
(0088) GuiDisStringF3(1,2,"{Start Measure",1);
(0089) GuiDisStringF3(1,3," Parameters Setup",1);
(0090) GuiDisStringF3(1,4," Data Manage",1);
(0091) GuiDisStringF3(1,5," System Setting",1);
(0092) //GuiDisStringF3(8,7,"18:56",1);
(0093)
(0094)
(0095) Delay10ms(60000);
(0096) Delay10ms(60000);
(0097) Delay10ms(60000);
(0098) }
(0099) */
(0100) while(1)
(0101) {
(0102) GuiDisRoolStringF3(25,102,4,"AVR 3D GRAPHICS DISPLAY...,ATMEGA128@16MHz LCD 128X64 DOTS",1);
4E3 940E 16EA CALL 0x16EA
4E5 E280 LDI R24,0x20
4E6 940E 161A CALL 0x161A
4E8 D3FA RCALL _GuiDisRoolStringF3
(0103) action();
4E9 940E 0EBE CALL _action
4EB 940E 16EA CALL 0x16EA
(0104) GuiDisRoolStringF3(25,102,4,"OVER! KK20Y@YAHOO.COM.CN 2008-4",1);
4ED E080 LDI R24,0
4EE 940E 161A CALL 0x161A
4F0 D3F2 RCALL _GuiDisRoolStringF3
(0105) LcdClr();
4F1 D094 RCALL _LcdClr
4F2 CFF0 RJMP 0x04E3
4F3 962A ADIW R28,0xA
4F4 9508 RET
(0106)
(0107) // NOP;
(0108) }
(0109) }
(0110)
(0111) /****************************************
(0112) * FUNCTION NAME: Delay100ms *
(0113) * DESCRIPTION: MCU CLOCK=11.0592Mhz *
(0114) /***************************************/
(0115) void Delay100ms(void)
(0116) {
(0117) unsigned int temp;
(0118) unsigned char i;
(0119) for(i=0;i<100;i++)
_Delay100ms:
i --> R16
temp --> R18
4F5 2700 CLR R16
4F6 C004 RJMP 0x04FB
(0120) {
(0121) for(temp=2000; temp>0;temp--) /* Delay About 1ms */
4F7 ED20 LDI R18,0xD0
4F8 E037 LDI R19,7
4F9 940E 169A CALL 0x169A
4FB 3604 CPI R16,0x64
4FC F3D0 BCS 0x04F7
4FD 9508 RET
FILE: F:\CODE\LCD1286418\lcd1286418.c
(0001) /***********************************************************************************************
(0002) * FILE NAME: lcd1286418.c
(0003) * PURPOSE: lcd1286418 drive Firmware
(0004) * DESCRIPTION: KS0108
(0005) * DEVELOPMENT HISTORY:
(0006) * Date Author Release Description Of Change
(0007) * -------- ------------ --------- ------------------------------------------------
(0008) * 08-04-11 XuGuohong 1.0 Testing Edition
(0009) /**********************************************************************************************/
(0010)
(0011) /* Include Global Parameters */
(0012) #include <iom128v.h>
(0013) #include "avr.h"
(0014)
(0015) /* LCD PORTING ON ATMEGA128 */
(0016) /* D0---D7 */
(0017) #define LCDPORTDATA PORTF
(0018) #define LCDDDRDATA DDRF
(0019) #define LCDPINDATA PINF
(0020) /* CS1 */
(0021) #define LCDPORTCS1 PORTE
(0022) #define LCDDDRCS1 DDRE
(0023) #define LCDCS1 PE2
(0024) /* CS2 */
(0025) #define LCDPORTCS2 PORTE
(0026) #define LCDDDRCS2 DDRE
(0027) #define LCDCS2 PE3
(0028) /* RW */
(0029) #define LCDPORTRW PORTE
(0030) #define LCDDDRRW DDRE
(0031) #define LCDRW PE4
(0032) /* RS */
(0033) #define LCDPORTRS PORTB
(0034) #define LCDDDRRS DDRB
(0035) #define LCDRS PB2
(0036) /* E */
(0037) #define LCDPORTEN PORTB
(0038) #define LCDDDREN DDRB
(0039) #define LCDEN PB3
(0040)
(0041) /* Include Global Parameters */
(0042) unsigned char displaybuffer[8][128];
(0043)
(0044) /* Declare Prototypes */
(0045) void LcdInit(void);
(0046) void LcdWrCmd(unsigned char,unsigned char);
(0047) void LcdWrDat(unsigned char,unsigned char);
(0048) unsigned char LcdRdSta(unsigned char);
(0049) unsigned char LcdRdDat(unsigned char);
(0050) unsigned char LcdBusy(void);
(0051) void LcdClr(void);
(0052) void LcdDisplaySeg(unsigned char,unsigned char,unsigned char);
(0053) void LcdDisplayDot(unsigned char,unsigned char,unsigned char);
(0054) void LcdDsiplayRefresh(void);
(0055) void Delay1ms(void);
(0056)
(0057) /*****************************************
(0058) * FUNCTION NAME: LcdInit
(0059) * DESCRIPTION: LCD Initialization
(0060) /*****************************************/
(0061) void LcdInit(void)
(0062) {
(0063) /* Ports Initialization */
(0064) SetBit(LCDPORTCS1,LCDCS1);
_LcdInit:
4FE 9A1A SBI 0x03,2
(0065) SetBit(LCDPORTCS2,LCDCS2);
4FF 9A1B SBI 0x03,3
(0066) ClrBit(LCDPORTEN,LCDEN);
500 98C3 CBI 0x18,3
(0067) SetOutput(LCDDDRRS,LCDRS);
501 9ABA SBI 0x17,2
(0068) SetOutput(LCDDDRRW,LCDRW);
502 9A14 SBI 0x02,4
(0069) SetOutput(LCDDDRCS1,LCDCS1);
503 9A12 SBI 0x02,2
(0070) SetOutput(LCDDDRCS2,LCDCS2);
504 9A13 SBI 0x02,3
(0071) SetOutput(LCDDDREN,LCDEN);
505 9ABB SBI 0x17,3
(0072) Delay1ms();
506 D167 RCALL _Delay1ms
(0073) /* Lcd Clear */
(0074) LcdClr();
507 D07E RCALL _LcdClr
508 9508 RET
_LcdWrCmd:
data --> R10
chiplr --> R20
509 940E 1780 CALL 0x1780
(0075) }
(0076)
(0077) /*****************************************
(0078) * FUNCTION NAME: LcdWrCmd
(0079) * DESCRIPTION: Write Command To LCD
(0080) * chiplr = "L" or "R"
(0081) * chiplr = " B "同时选中
(0082) /*****************************************/
(0083) void LcdWrCmd(unsigned char chiplr,unsigned char data)
(0084) {
(0085) while(LcdBusy() == 0) /* IF LCD BUSY,WAIT... */
50B D067 RCALL _LcdBusy
50C 2300 TST R16
50D F3E9 BEQ 0x050B
(0086) ;
(0087) ClrBit(LCDPORTRS,LCDRS); /* RS = 0 ,COMMAND */
50E 98C2 CBI 0x18,2
(0088) ClrBit(LCDPORTRW,LCDRW); /* RW = 0 ,WRITE */
50F 981C CBI 0x03,4
(0089) if(chiplr == 'L') /* CS = 0 ,CHIP SELECT */
510 344C CPI R20,0x4C
511 F411 BNE 0x0514
(0090) ClrBit(LCDPORTCS1,LCDCS1);
512 981A CBI 0x03,2
513 C006 RJMP 0x051A
(0091) else if(chiplr == 'R')
514 3542 CPI R20,0x52
515 F411 BNE 0x0518
(0092) ClrBit(LCDPORTCS2,LCDCS2);
516 981B CBI 0x03,3
517 C002 RJMP 0x051A
(0093) else
(0094) {
(0095) ClrBit(LCDPORTCS1,LCDCS1);
518 981A CBI 0x03,2
(0096) ClrBit(LCDPORTCS2,LCDCS2);
519 981B CBI 0x03,3
(0097) }
(0098) NOP; /* DELAY AT LEAS;T 140ns */
51A 0000 NOP
(0099) NOP;
51B 0000 NOP
(0100) SetBit(LCDPORTEN,LCDEN); /* EN = 1 */
51C 9AC3 SBI 0x18,3
51D 940E 15B4 CALL 0x15B4
(0101) NOP; /* DELAY AT LEAST 450ns */
(0102) NOP;
(0103) NOP;
(0104) NOP;
(0105) NOP;
51F 0000 NOP
(0106) LCDDDRDATA = 0XFF; /* WRITE DATA TO LCD */
520 EF8F LDI R24,0xFF
521 9380 0061 STS 0x0061,R24
(0107) LCDPORTDATA = data;
523 92A0 0062 STS 0x0062,R10
525 940E 163A CALL 0x163A
(0108) ClrBit(LCDPORTEN,LCDEN); /* EN = 0 */
(0109) NOP; /* DELAY AT LEAST 10ns */
(0110) SetBit(LCDPORTCS1,LCDCS1); /* CHIP DISABLE */
(0111) SetBit(LCDPORTCS2,LCDCS2);
(0112) NOP;
527 9149 LD R20,Y+
528 90A9 LD R10,Y+
529 9508 RET
_LcdWrDat:
data --> R10
chiplr --> R20
52A 940E 1780 CALL 0x1780
(0113) }
(0114)
(0115) /*****************************************
(0116) * FUNCTION NAME: LcdWrDat
(0117) * DESCRIPTION: Write Data To LCD
(0118) * chiplr = "L" or "R"
(0119) /*****************************************/
(0120) void LcdWrDat(unsigned char chiplr,unsigned char data)
(0121) {
(0122) while(LcdBusy() == 0) /* IF LCD BUSY,WAIT... */
52C D046 RCALL _LcdBusy
52D 2300 TST R16
52E F3E9 BEQ 0x052C
(0123) ;
(0124) SetBit(LCDPORTRS,LCDRS); /* RS = 0 ,COMMAND */
52F 9AC2 SBI 0x18,2
(0125) ClrBit(LCDPORTRW,LCDRW); /* RW = 0 ,WRITE */
530 981C CBI 0x03,4
(0126) if(chiplr == 'L') /* CS = 0 ,CHIP SELECT */
531 344C CPI R20,0x4C
532 F411 BNE 0x0535
(0127) ClrBit(LCDPORTCS1,LCDCS1);
533 981A CBI 0x03,2
534 C006 RJMP 0x053B
(0128) else if(chiplr == 'R')
535 3542 CPI R20,0x52
536 F411 BNE 0x0539
(0129) ClrBit(LCDPORTCS2,LCDCS2);
537 981B CBI 0x03,3
538 C002 RJMP 0x053B
(0130) else
(0131) {
(0132) ClrBit(LCDPORTCS1,LCDCS1);
539 981A CBI 0x03,2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -