?? main.lst
字號:
874 00a4 CBDF rcall LCD_write_byte
876 .LM39:
877 00a6 D6DF rcall LCD_clear
879 .LM40:
880 00a8 60E0 ldi r22,lo8(0)
881 00aa 8CE0 ldi r24,lo8(12)
882 00ac C7DF rcall LCD_write_byte
884 .LM41:
885 00ae C298 cbi 56-0x20,2
886 /* epilogue: frame size=0 */
887 00b0 0895 ret
888 /* epilogue end (size=1) */
889 /* function LCD_init size 28 (27) */
894 .global LCD_set_XY
896 LCD_set_XY:
898 .LM42:
899 /* prologue: frame size=0 */
900 00b2 1F93 push r17
901 /* prologue end (size=1) */
902 00b4 182F mov r17,r24
903 00b6 862F mov r24,r22
905 .LM43:
906 00b8 60E0 ldi r22,lo8(0)
907 00ba 8064 ori r24,lo8(64)
908 00bc BFDF rcall LCD_write_byte
910 .LM44:
911 00be 60E0 ldi r22,lo8(0)
912 00c0 812F mov r24,r17
913 00c2 8068 ori r24,lo8(-128)
914 00c4 BBDF rcall LCD_write_byte
915 /* epilogue: frame size=0 */
916 00c6 1F91 pop r17
917 00c8 0895 ret
918 /* epilogue end (size=2) */
919 /* function LCD_set_XY size 12 (9) */
923 .global LCD_write_char
925 LCD_write_char:
927 .LM45:
928 /* prologue: frame size=0 */
929 00ca 1F93 push r17
930 00cc CF93 push r28
931 00ce DF93 push r29
932 /* prologue end (size=3) */
934 .LM46:
935 00d0 182F mov r17,r24
936 00d2 1052 subi r17,lo8(-(-32))
938 .LM47:
939 00d4 C0E0 ldi r28,lo8(0)
940 00d6 D0E0 ldi r29,hi8(0)
941 .L162:
943 .LM48:
944 00d8 812F mov r24,r17
945 00da 9927 clr r25
946 00dc FC01 movw r30,r24
947 00de EE0F lsl r30
948 00e0 FF1F rol r31
949 00e2 EE0F lsl r30
950 00e4 FF1F rol r31
951 00e6 E80F add r30,r24
952 00e8 F91F adc r31,r25
953 00ea E80F add r30,r24
954 00ec F91F adc r31,r25
955 00ee EC0F add r30,r28
956 00f0 FD1F adc r31,r29
957 00f2 E050 subi r30,lo8(-(font6x8))
958 00f4 F040 sbci r31,hi8(-(font6x8))
959 00f6 61E0 ldi r22,lo8(1)
960 00f8 8081 ld r24,Z
961 00fa A0DF rcall LCD_write_byte
963 .LM49:
964 00fc 2196 adiw r28,1
965 00fe C630 cpi r28,6
966 0100 D105 cpc r29,__zero_reg__
967 0102 50F3 brlo .L162
968 /* epilogue: frame size=0 */
969 0104 DF91 pop r29
970 0106 CF91 pop r28
971 0108 1F91 pop r17
972 010a 0895 ret
973 /* epilogue end (size=4) */
974 /* function LCD_write_char size 33 (26) */
979 .global LCD_write_inverse_char
981 LCD_write_inverse_char:
983 .LM50:
984 /* prologue: frame size=0 */
985 010c 1F93 push r17
986 010e CF93 push r28
987 0110 DF93 push r29
988 /* prologue end (size=3) */
990 .LM51:
991 0112 182F mov r17,r24
992 0114 1052 subi r17,lo8(-(-32))
994 .LM52:
995 0116 C0E0 ldi r28,lo8(0)
996 0118 D0E0 ldi r29,hi8(0)
997 .L169:
999 .LM53:
1000 011a 812F mov r24,r17
1001 011c 9927 clr r25
1002 011e FC01 movw r30,r24
1003 0120 EE0F lsl r30
1004 0122 FF1F rol r31
1005 0124 EE0F lsl r30
1006 0126 FF1F rol r31
1007 0128 E80F add r30,r24
1008 012a F91F adc r31,r25
1009 012c E80F add r30,r24
1010 012e F91F adc r31,r25
1011 0130 EC0F add r30,r28
1012 0132 FD1F adc r31,r29
1013 0134 E050 subi r30,lo8(-(font6x8))
1014 0136 F040 sbci r31,hi8(-(font6x8))
1015 0138 8081 ld r24,Z
1016 013a 61E0 ldi r22,lo8(1)
1017 013c 8095 com r24
1018 013e 7EDF rcall LCD_write_byte
1020 .LM54:
1021 0140 2196 adiw r28,1
1022 0142 C630 cpi r28,6
1023 0144 D105 cpc r29,__zero_reg__
1024 0146 48F3 brlo .L169
1025 /* epilogue: frame size=0 */
1026 0148 DF91 pop r29
1027 014a CF91 pop r28
1028 014c 1F91 pop r17
1029 014e 0895 ret
1030 /* epilogue end (size=4) */
1031 /* function LCD_write_inverse_char size 34 (27) */
1038 .global LCD_write_english_string
1040 LCD_write_english_string:
1042 .LM55:
1043 /* prologue: frame size=0 */
1044 0150 CF93 push r28
1045 0152 DF93 push r29
1046 /* prologue end (size=2) */
1047 0154 EA01 movw r28,r20
1049 .LM56:
1050 0156 ADDF rcall LCD_set_XY
1052 .LM57:
1053 0158 8881 ld r24,Y
1054 015a 8823 tst r24
1055 015c 29F0 breq .L177
1056 .L175:
1058 .LM58:
1059 015e 8991 ld r24,Y+
1060 0160 B4DF rcall LCD_write_char
1062 .LM59:
1063 0162 8881 ld r24,Y
1064 0164 8823 tst r24
1065 0166 D9F7 brne .L175
1066 .L177:
1067 /* epilogue: frame size=0 */
1068 0168 DF91 pop r29
1069 016a CF91 pop r28
1070 016c 0895 ret
1071 /* epilogue end (size=3) */
1072 /* function LCD_write_english_string size 15 (10) */
1078 .global LCD_write_inverse_string
1080 LCD_write_inverse_string:
1082 .LM60:
1083 /* prologue: frame size=0 */
1084 016e CF93 push r28
1085 0170 DF93 push r29
1086 /* prologue end (size=2) */
1087 0172 EA01 movw r28,r20
1089 .LM61:
1090 0174 9EDF rcall LCD_set_XY
1092 .LM62:
1093 0176 8881 ld r24,Y
1094 0178 8823 tst r24
1095 017a 29F0 breq .L183
1096 .L181:
1098 .LM63:
1099 017c 8991 ld r24,Y+
1100 017e C6DF rcall LCD_write_inverse_char
1102 .LM64:
1103 0180 8881 ld r24,Y
1104 0182 8823 tst r24
1105 0184 D9F7 brne .L181
1106 .L183:
1107 /* epilogue: frame size=0 */
1108 0186 DF91 pop r29
1109 0188 CF91 pop r28
1110 018a 0895 ret
1111 /* epilogue end (size=3) */
1112 /* function LCD_write_inverse_string size 15 (10) */
1115 .global lcd_inverse
1117 lcd_inverse:
176:3310LCD_function.c **** }
177:3310LCD_function.c ****
178:3310LCD_function.c **** void lcd_inverse(void)
179:3310LCD_function.c **** {
1119 .LM65:
1120 /* prologue: frame size=0 */
1121 /* prologue end (size=0) */
180:3310LCD_function.c **** LCD_write_byte(0b00001101,0);
1123 .LM66:
1124 018c 60E0 ldi r22,lo8(0)
1125 018e 8DE0 ldi r24,lo8(13)
1126 0190 55DF rcall LCD_write_byte
1127 /* epilogue: frame size=0 */
1128 0192 0895 ret
1129 /* epilogue end (size=1) */
1130 /* function lcd_inverse size 4 (3) */
1133 .global lcd_no_inverse
1135 lcd_no_inverse:
181:3310LCD_function.c **** }
182:3310LCD_function.c **** void lcd_no_inverse(void)
183:3310LCD_function.c **** {
1137 .LM67:
1138 /* prologue: frame size=0 */
1139 /* prologue end (size=0) */
184:3310LCD_function.c **** LCD_write_byte(0b00001100,0);
1141 .LM68:
1142 0194 60E0 ldi r22,lo8(0)
1143 0196 8CE0 ldi r24,lo8(12)
1144 0198 51DF rcall LCD_write_byte
1145 /* epilogue: frame size=0 */
1146 019a 0895 ret
1147 /* epilogue end (size=1) */
1148 /* function lcd_no_inverse size 4 (3) */
1152 .global delay_ms
1154 delay_ms:
1156 .Ltext3:
1:main.c **** // WINAVR GCC
2:main.c **** // ATmega8
3:main.c **** // clock: internal 1Mhz
4:main.c ****
5:main.c **** #include <avr/io.h>
6:main.c **** #include <avr/interrupt.h>
7:main.c **** #include <avr/signal.h>
8:main.c **** #include <avr/delay.h>
9:main.c **** #include <avr/eeprom.h>
10:main.c **** #include "3310LCD_function.c"
11:main.c ****
12:main.c **** #define uchar uint8_t
13:main.c **** #define uint uint16_t
14:main.c ****
15:main.c **** #define SLA_W 0b11000000
16:main.c **** #define SLA_R 0b11000001
17:main.c ****
18:main.c **** uchar senddata[5] ;
19:main.c **** uchar readdata[5] ;
20:main.c **** uchar search = 0;
21:main.c **** uchar search_up = 0;
22:main.c ****
23:main.c **** //-------------------------------
24:main.c **** // 延時
25:main.c **** void delay_ms(uint ms)
26:main.c **** {
1158 .LM69:
1159 /* prologue: frame size=0 */
1160 /* prologue end (size=0) */
27:main.c **** uint i;
28:main.c **** for(i=0;i<ms;i++)
1162 .LM70:
1163 019c 0097 sbiw r24,0
1164 019e 41F0 breq .L193
1165 01a0 9C01 movw r18,r24
1166 .L191:
1167 .LBB2:
1169 .Ltext4:
1:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** All rights reserved.
3:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
4:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
5:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
6:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
7:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
8:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
9:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
10:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
11:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** the documentation and/or other materials provided with the
12:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** distribution.
13:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
14:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
25:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
26:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2.2.2 2004/02/13 21:43:37 joerg_wunsch Exp $ */
27:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
28:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /*
29:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
30:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** */
31:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
32:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
33:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
34:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
35:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
36:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
37:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
38:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
39:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
40:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
41:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
42:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
43:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "brne 1b"
44:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "=r" (__count)
45:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "0" (__count)
46:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** );
47:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** }
48:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
49:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 16-bit count, 4 cycles/loop */
50:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
51:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
52:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
1171 .LM71:
1172 01a2 8AEF ldi r24,lo8(250)
1173 01a4 90E0 ldi r25,hi8(250)
1174 .LBB3:
53:C:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -