?? main.lst
字號(hào):
689 001c 94E0 ldi r25,hi8(1139)
690 .L13:
19:delay_function.C **** unsigned int i;
20:delay_function.C **** for (i=0;i<1140;i++);
692 .LM8:
693 001e CC97 sbiw r24,60
694 0020 97FF sbrs r25,7
695 0022 FDCF rjmp .L13
696 /* epilogue: frame size=0 */
697 0024 0895 ret
698 /* epilogue end (size=1) */
699 /* function delay_1ms size 6 (5) */
704 .global delay_nms
706 delay_nms:
21:delay_function.C **** }
22:delay_function.C ****
23:delay_function.C **** void delay_nms(unsigned int n) //N ms延時(shí)函數(shù)
24:delay_function.C **** {
708 .LM9:
709 /* prologue: frame size=0 */
710 0026 CF93 push r28
711 0028 DF93 push r29
712 /* prologue end (size=2) */
25:delay_function.C **** unsigned int i=0;
26:delay_function.C **** for (i=0;i<n;i++)
714 .LM10:
715 002a 0097 sbiw r24,0
716 002c 21F0 breq .L142
717 002e EC01 movw r28,r24
718 .L140:
27:delay_function.C **** delay_1ms();
720 .LM11:
721 0030 F4DF rcall delay_1ms
723 .LM12:
724 0032 2197 sbiw r28,1
725 0034 E9F7 brne .L140
726 .L142:
727 /* epilogue: frame size=0 */
728 0036 DF91 pop r29
729 0038 CF91 pop r28
730 003a 0895 ret
731 /* epilogue end (size=3) */
732 /* function delay_nms size 12 (7) */
738 .global LCD_write_byte
740 LCD_write_byte:
742 .Ltext2:
1:3310LCD_function.c ****
2:3310LCD_function.c ****
3:3310LCD_function.c ****
4:3310LCD_function.c ****
5:3310LCD_function.c **** #include <avr/io.h>
6:3310LCD_function.c ****
7:3310LCD_function.c **** #include "english_6x8_pixel.h"
8:3310LCD_function.c **** #include "delay_function.C"
9:3310LCD_function.c ****
10:3310LCD_function.c **** // Mega48/8 port B pinout for LCD.
11:3310LCD_function.c **** #define LCD_DC 0x01 // PB0
12:3310LCD_function.c **** #define LCD_CE 0x04 // PB2
13:3310LCD_function.c **** #define SPI_MOSI 0x08 // PB3
14:3310LCD_function.c **** #define LCD_RST 0x10 // PB4
15:3310LCD_function.c **** #define SPI_CLK 0x20 // PB5
16:3310LCD_function.c ****
17:3310LCD_function.c **** void LCD_init(void);
18:3310LCD_function.c ****
19:3310LCD_function.c **** void LCD_clear(void);
20:3310LCD_function.c ****
21:3310LCD_function.c **** void LCD_write_english_string(unsigned char X,unsigned char Y,char *s);
22:3310LCD_function.c ****
23:3310LCD_function.c **** void LCD_write_chinese_string(unsigned char X, unsigned char Y,
24:3310LCD_function.c **** unsigned char ch_with,unsigned char num,
25:3310LCD_function.c **** unsigned char line,unsigned char row);
26:3310LCD_function.c ****
27:3310LCD_function.c **** void LCD_write_char(unsigned char c);
28:3310LCD_function.c ****
29:3310LCD_function.c **** void LCD_write_byte(unsigned char data, unsigned char dc);
30:3310LCD_function.c ****
31:3310LCD_function.c **** void delay_1us(void);
32:3310LCD_function.c **** void delay_nus(unsigned int n);
33:3310LCD_function.c **** void delay_1ms(void);
34:3310LCD_function.c **** void delay_nms(unsigned int n);
35:3310LCD_function.c **** /*-----------------------------------------------------------------------
36:3310LCD_function.c **** LCD_init : 3310LCD初始化
37:3310LCD_function.c ****
38:3310LCD_function.c **** 編寫日期 :2004-8-10
39:3310LCD_function.c **** 最后修改日期 :2004-8-10
40:3310LCD_function.c **** -----------------------------------------------------------------------*/
41:3310LCD_function.c **** void LCD_init(void)
42:3310LCD_function.c **** {
43:3310LCD_function.c **** PORTB &= ~LCD_RST; // 產(chǎn)生一個(gè)讓LCD復(fù)位的低電平脈沖
44:3310LCD_function.c **** delay_1us();
45:3310LCD_function.c **** PORTB |= LCD_RST;
46:3310LCD_function.c ****
47:3310LCD_function.c **** PORTB &= ~LCD_CE ; // 關(guān)閉LCD
48:3310LCD_function.c **** delay_1us();
49:3310LCD_function.c **** PORTB |= LCD_CE; // 使能LCD
50:3310LCD_function.c **** delay_1us();
51:3310LCD_function.c ****
52:3310LCD_function.c **** LCD_write_byte(0x21, 0); // 使用擴(kuò)展命令設(shè)置LCD模式
53:3310LCD_function.c **** LCD_write_byte(0xc8, 0); // 設(shè)置偏置電壓
54:3310LCD_function.c **** LCD_write_byte(0x06, 0); // 溫度校正
55:3310LCD_function.c **** LCD_write_byte(0x13, 0); // 1:48
56:3310LCD_function.c **** LCD_write_byte(0x20, 0); // 使用基本命令
57:3310LCD_function.c **** LCD_clear(); // 清屏
58:3310LCD_function.c **** LCD_write_byte(0x0c, 0); // 設(shè)定顯示模式,正常顯示
59:3310LCD_function.c ****
60:3310LCD_function.c **** PORTB &= ~LCD_CE ; // 關(guān)閉LCD
61:3310LCD_function.c **** }
62:3310LCD_function.c ****
63:3310LCD_function.c **** /*-----------------------------------------------------------------------
64:3310LCD_function.c **** LCD_clear : LCD清屏函數(shù)
65:3310LCD_function.c ****
66:3310LCD_function.c **** 編寫日期 :2004-8-10
67:3310LCD_function.c **** 最后修改日期 :2004-8-10
68:3310LCD_function.c **** -----------------------------------------------------------------------*/
69:3310LCD_function.c **** void LCD_clear(void)
70:3310LCD_function.c **** {
71:3310LCD_function.c **** unsigned int i;
72:3310LCD_function.c ****
73:3310LCD_function.c **** LCD_write_byte(0x0c, 0);
74:3310LCD_function.c **** LCD_write_byte(0x80, 0);
75:3310LCD_function.c ****
76:3310LCD_function.c **** for (i=0; i<504; i++)
77:3310LCD_function.c **** LCD_write_byte(0, 1);
78:3310LCD_function.c **** }
79:3310LCD_function.c ****
80:3310LCD_function.c **** /*-----------------------------------------------------------------------
81:3310LCD_function.c **** LCD_set_XY : 設(shè)置LCD坐標(biāo)函數(shù)
82:3310LCD_function.c ****
83:3310LCD_function.c **** 輸入?yún)?shù):X :0-83
84:3310LCD_function.c **** Y :0-5
85:3310LCD_function.c ****
86:3310LCD_function.c **** 編寫日期 :2004-8-10
87:3310LCD_function.c **** 最后修改日期 :2004-8-10
88:3310LCD_function.c **** -----------------------------------------------------------------------*/
89:3310LCD_function.c **** void LCD_set_XY(unsigned char X, unsigned char Y)
90:3310LCD_function.c **** {
91:3310LCD_function.c **** LCD_write_byte(0x40 | Y, 0); // column
92:3310LCD_function.c **** LCD_write_byte(0x80 | X, 0); // row
93:3310LCD_function.c **** }
94:3310LCD_function.c ****
95:3310LCD_function.c **** /*-----------------------------------------------------------------------
96:3310LCD_function.c **** LCD_write_char : 顯示英文字符
97:3310LCD_function.c ****
98:3310LCD_function.c **** 輸入?yún)?shù):c :顯示的字符;
99:3310LCD_function.c ****
100:3310LCD_function.c **** 編寫日期 :2004-8-10
101:3310LCD_function.c **** 最后修改日期 :2004-8-10
102:3310LCD_function.c **** -----------------------------------------------------------------------*/
103:3310LCD_function.c **** void LCD_write_char(unsigned char c)
104:3310LCD_function.c **** {
105:3310LCD_function.c **** unsigned int line;
106:3310LCD_function.c ****
107:3310LCD_function.c **** c -= 32;
108:3310LCD_function.c ****
109:3310LCD_function.c **** for (line=0; line<6; line++)
110:3310LCD_function.c **** LCD_write_byte(font6x8[c][line], 1);
111:3310LCD_function.c **** }
112:3310LCD_function.c ****
113:3310LCD_function.c ****
114:3310LCD_function.c **** void LCD_write_inverse_char(unsigned char c)
115:3310LCD_function.c **** {
116:3310LCD_function.c **** unsigned int line;
117:3310LCD_function.c ****
118:3310LCD_function.c **** c -= 32;
119:3310LCD_function.c ****
120:3310LCD_function.c **** for (line=0; line<6; line++)
121:3310LCD_function.c **** LCD_write_byte(~font6x8[c][line], 1);
122:3310LCD_function.c **** }
123:3310LCD_function.c ****
124:3310LCD_function.c **** /*-----------------------------------------------------------------------
125:3310LCD_function.c **** LCD_write_english_String : 英文字符串顯示函數(shù)
126:3310LCD_function.c ****
127:3310LCD_function.c **** 輸入?yún)?shù):*s :英文字符串指針;
128:3310LCD_function.c **** X、Y : 顯示字符串的位置,x 0-83 ,y 0-5
129:3310LCD_function.c ****
130:3310LCD_function.c **** 編寫日期 :2004-8-10
131:3310LCD_function.c **** 最后修改日期 :2004-8-10
132:3310LCD_function.c **** -----------------------------------------------------------------------*/
133:3310LCD_function.c **** void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
134:3310LCD_function.c **** {
135:3310LCD_function.c **** LCD_set_XY(X,Y);
136:3310LCD_function.c **** while (*s)
137:3310LCD_function.c **** {
138:3310LCD_function.c **** LCD_write_char(*s);
139:3310LCD_function.c **** s++;
140:3310LCD_function.c **** }
141:3310LCD_function.c **** }
142:3310LCD_function.c ****
143:3310LCD_function.c **** void LCD_write_inverse_string(unsigned char X,unsigned char Y,char *s)
144:3310LCD_function.c **** {
145:3310LCD_function.c **** LCD_set_XY(X,Y);
146:3310LCD_function.c **** while (*s)
147:3310LCD_function.c **** {
148:3310LCD_function.c **** LCD_write_inverse_char(*s);
149:3310LCD_function.c **** s++;
150:3310LCD_function.c **** }
151:3310LCD_function.c **** }
152:3310LCD_function.c ****
153:3310LCD_function.c **** /*-----------------------------------------------------------------------
154:3310LCD_function.c **** LCD_write_byte : 使用SPI接口寫數(shù)據(jù)到LCD
155:3310LCD_function.c ****
156:3310LCD_function.c **** 輸入?yún)?shù):data :寫入的數(shù)據(jù);
157:3310LCD_function.c **** command :寫數(shù)據(jù)/命令選擇;
158:3310LCD_function.c ****
159:3310LCD_function.c **** 編寫日期 :2004-8-10
160:3310LCD_function.c **** 最后修改日期 :2004-8-13
161:3310LCD_function.c **** -----------------------------------------------------------------------*/
162:3310LCD_function.c **** void LCD_write_byte(unsigned char data, unsigned char command)
163:3310LCD_function.c **** {
744 .LM13:
745 /* prologue: frame size=0 */
746 /* prologue end (size=0) */
747 003c 982F mov r25,r24
164:3310LCD_function.c **** PORTB &= ~LCD_CE ; // 使能LCD
749 .LM14:
750 003e C298 cbi 56-0x20,2
165:3310LCD_function.c ****
166:3310LCD_function.c **** if (command == 0)
752 .LM15:
753 0040 6623 tst r22
754 0042 11F4 brne .L144
167:3310LCD_function.c **** PORTB &= ~LCD_DC ; // 傳送命令
756 .LM16:
757 0044 C098 cbi 56-0x20,0
758 0046 01C0 rjmp .L145
759 .L144:
168:3310LCD_function.c **** else
169:3310LCD_function.c **** PORTB |= LCD_DC ; // 傳送數(shù)據(jù)
761 .LM17:
762 0048 C09A sbi 56-0x20,0
763 .L145:
170:3310LCD_function.c ****
171:3310LCD_function.c **** SPDR = data; // 傳送數(shù)據(jù)到SPI寄存器
765 .LM18:
766 004a 9FB9 out 47-0x20,r25
767 .L146:
172:3310LCD_function.c ****
173:3310LCD_function.c **** while ((SPSR & 0x80) == 0); // 等待數(shù)據(jù)傳送完畢
769 .LM19:
770 004c 779B sbis 46-0x20,7
771 004e FECF rjmp .L146
174:3310LCD_function.c ****
175:3310LCD_function.c **** PORTB |= LCD_CE ; // 關(guān)閉LCD
773 .LM20:
774 0050 C29A sbi 56-0x20,2
775 /* epilogue: frame size=0 */
776 0052 0895 ret
777 /* epilogue end (size=1) */
778 /* function LCD_write_byte size 12 (11) */
781 .global LCD_clear
783 LCD_clear:
785 .LM21:
786 /* prologue: frame size=0 */
787 0054 CF93 push r28
788 0056 DF93 push r29
789 /* prologue end (size=2) */
791 .LM22:
792 0058 60E0 ldi r22,lo8(0)
793 005a 8CE0 ldi r24,lo8(12)
794 005c EFDF rcall LCD_write_byte
796 .LM23:
797 005e 60E0 ldi r22,lo8(0)
798 0060 80E8 ldi r24,lo8(-128)
799 0062 ECDF rcall LCD_write_byte
800 0064 C7EF ldi r28,lo8(503)
801 0066 D1E0 ldi r29,hi8(503)
802 .L153:
804 .LM24:
805 0068 61E0 ldi r22,lo8(1)
806 006a 80E0 ldi r24,lo8(0)
807 006c E7DF rcall LCD_write_byte
809 .LM25:
810 006e 2197 sbiw r28,1
811 0070 D7FF sbrs r29,7
812 0072 FACF rjmp .L153
813 /* epilogue: frame size=0 */
814 0074 DF91 pop r29
815 0076 CF91 pop r28
816 0078 0895 ret
817 /* epilogue end (size=3) */
818 /* function LCD_clear size 19 (14) */
822 .global LCD_init
824 LCD_init:
826 .LM26:
827 /* prologue: frame size=0 */
828 /* prologue end (size=0) */
830 .LM27:
831 007a C498 cbi 56-0x20,4
833 .LM28:
834 007c C1DF rcall delay_1us
836 .LM29:
837 007e C49A sbi 56-0x20,4
839 .LM30:
840 0080 C298 cbi 56-0x20,2
842 .LM31:
843 0082 BEDF rcall delay_1us
845 .LM32:
846 0084 C29A sbi 56-0x20,2
848 .LM33:
849 0086 BCDF rcall delay_1us
851 .LM34:
852 0088 60E0 ldi r22,lo8(0)
853 008a 81E2 ldi r24,lo8(33)
854 008c D7DF rcall LCD_write_byte
856 .LM35:
857 008e 60E0 ldi r22,lo8(0)
858 0090 88EC ldi r24,lo8(-56)
859 0092 D4DF rcall LCD_write_byte
861 .LM36:
862 0094 60E0 ldi r22,lo8(0)
863 0096 86E0 ldi r24,lo8(6)
864 0098 D1DF rcall LCD_write_byte
866 .LM37:
867 009a 60E0 ldi r22,lo8(0)
868 009c 83E1 ldi r24,lo8(19)
869 009e CEDF rcall LCD_write_byte
871 .LM38:
872 00a0 60E0 ldi r22,lo8(0)
873 00a2 80E2 ldi r24,lo8(32)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -