📄 prj.lst
字号:
1BE 940C 025B JMP pop_xgsetF00C
(0227) }
(0228) }
(0229) // ************************** //
(0230) // *** Turn the cursor on *** //
(0231) // ************************** //
(0232) void LCD_Cursor_On (void)
(0233) {
(0234) LCD_WriteControl (LCD_CURS_ON);
_LCD_Cursor_On:
1C0 E00D LDI R16,0xD
1C1 DF64 RCALL _LCD_WriteControl
1C2 9508 RET
(0235) }
(0236) // *************************** //
(0237) // *** Turn the cursor off *** //
(0238) // *************************** //
(0239) void LCD_Cursor_Off (void)
(0240) {
(0241) LCD_WriteControl (LCD_ON);
_LCD_Cursor_Off:
1C3 E00C LDI R16,0xC
1C4 DF61 RCALL _LCD_WriteControl
1C5 9508 RET
(0242) }
(0243) // ******************** //
(0244) // *** Turn Off LCD *** //
(0245) // ******************** //
(0246) void LCD_Display_Off (void)
(0247) {
(0248) LCD_WriteControl(LCD_OFF);
_LCD_Display_Off:
1C6 E008 LDI R16,0x8
1C7 DF5E RCALL _LCD_WriteControl
1C8 9508 RET
(0249) }
(0250) // ******************* //
(0251) // *** Turn On LCD *** //
(0252) // ******************* //
(0253) void LCD_Display_On (void)
(0254) {
(0255) LCD_WriteControl(LCD_ON);
_LCD_Display_On:
1C9 E00C LDI R16,0xC
1CA DF5B RCALL _LCD_WriteControl
1CB 9508 RET
_led:
num --> R20
1CC 934A ST R20,-Y
1CD 2F40 MOV R20,R16
FILE: D:\ICCAVR~1\模块化~1\src\led.c
(0001) #include "common.h"
(0002)
(0003) void led(unsigned char num);
(0004)
(0005) /********************************************************************************************
(0006) * 函数名称:led()
(0007) * 功 能:根据用户按下的键盘现实对应的发光管
(0008) * 入口参数:num
(0009) * 出口参数:无
(0010) * 说 明:用户可根据自己的键盘编号修改该函数
(0011) *********************************************************************************************/
(0012) void led(unsigned char num)
(0013) {
(0014)
(0015) if(num)
1CE 2344 TST R20
1CF F049 BEQ 0x01D9
(0016) {
(0017) PORTF=~(1<<(num-1));
1D0 2F14 MOV R17,R20
1D1 5011 SUBI R17,1
1D2 E001 LDI R16,1
1D3 940E 0282 CALL lsl8
1D5 2E20 MOV R2,R16
1D6 9420 COM R2
1D7 9220 0062 STS 0x0062,R2
(0018) }
1D9 9149 LD R20,Y+
1DA 9508 RET
FILE: D:\ICCAVR~1\模块化~1\src\main.c
(0001) /********************************************************************************************
(0002) *项目名:ATMEGA128控制4×6矩阵键盘,LCD1602
(0003) *项目描述:4×6键盘,通过按键来开启发光二极管,显示液晶1602屏幕
(0004) *硬件条件:1.CPU:ATMEGA128
(0005) 2.晶振:1MHz
(0006) *作者:cheungman
(0007) *日期:2007.11.12
(0008) *********************************************************************************************/
(0009) #include "common.h"
(0010)
(0011) /********************************************************************************************
(0012) * 函数名称:Init_Port()
(0013) * 功 能:I/O口初始化
(0014) * 入口参数:无
(0015) * 出口参数:无
(0016) * 说 明:
(0017) *********************************************************************************************/
(0018) void Init_Port(void)
(0019) {
(0020) PORTB=0xff;
_Init_Port:
1DB EF8F LDI R24,0xFF
1DC BB88 OUT 0x18,R24
(0021) DDRB=0xff;
1DD BB87 OUT 0x17,R24
(0022) PORTD=0xff;
1DE BB82 OUT 0x12,R24
(0023) DDRB=0xc0;
1DF EC80 LDI R24,0xC0
1E0 BB87 OUT 0x17,R24
(0024) PORTF=0xff;
1E1 EF8F LDI R24,0xFF
1E2 9380 0062 STS 0x0062,R24
(0025) DDRF=0xff;
1E4 9380 0061 STS 0x0061,R24
1E6 9508 RET
_main:
table --> Y,+2
temp --> R20
1E7 9727 SBIW R28,7
(0026) }
(0027)
(0028) void main(void)
(0029) {
(0030) unsigned char temp;
(0031) //unsigned char *p;
(0032) unsigned char table[5];
(0033) Init_LCD();
1E8 940E 0166 CALL _Init_LCD
(0034) Init_Port();
1EA DFF0 RCALL _Init_Port
(0035) LCD_DisplayString(1,1,"key scan test start");
1EB E286 LDI R24,0x26
1EC E091 LDI R25,1
1ED 8399 STD Y+1,R25
1EE 8388 STD Y+0,R24
1EF E021 LDI R18,1
1F0 E001 LDI R16,1
1F1 940E 0180 CALL _LCD_DisplayString
(0036) delay_nms(200);
1F3 EC08 LDI R16,0xC8
1F4 E010 LDI R17,0
1F5 940E 00A1 CALL _delay_nms
(0037) LCD_Clear();
1F7 940E 0174 CALL _LCD_Clear
1F9 C03B RJMP 0x0235
(0038) while(1)
(0039) {
(0040) LCD_DisplayString(1,1,"The number of key is");
1FA E181 LDI R24,0x11
1FB E091 LDI R25,1
1FC 8399 STD Y+1,R25
1FD 8388 STD Y+0,R24
1FE E021 LDI R18,1
1FF E001 LDI R16,1
200 940E 0180 CALL _LCD_DisplayString
(0041) temp=key_scan();
202 940E 00AF CALL _key_scan
204 2F40 MOV R20,R16
(0042) if(temp==1)
205 3001 CPI R16,1
206 F471 BNE 0x0215
(0043) {
(0044) LCD_Clear();
207 940E 0174 CALL _LCD_Clear
(0045) LCD_DisplayString(2,1,"zhangwen");
209 E088 LDI R24,0x8
20A E091 LDI R25,1
20B 8399 STD Y+1,R25
20C 8388 STD Y+0,R24
20D E021 LDI R18,1
20E E002 LDI R16,2
20F 940E 0180 CALL _LCD_DisplayString
(0046) led(temp);
211 2F04 MOV R16,R20
212 940E 01CC CALL _led
(0047) }
214 C020 RJMP 0x0235
(0048) else if(temp==2)
215 3042 CPI R20,2
216 F471 BNE 0x0225
(0049) {
(0050) LCD_Clear();
217 940E 0174 CALL _LCD_Clear
(0051) LCD_DisplayString(2,1,"Creator");
219 E080 LDI R24,0
21A E091 LDI R25,1
21B 8399 STD Y+1,R25
21C 8388 STD Y+0,R24
21D E021 LDI R18,1
21E E002 LDI R16,2
21F 940E 0180 CALL _LCD_DisplayString
(0052) led(temp);
221 2F04 MOV R16,R20
222 940E 01CC CALL _led
(0053) }
224 C010 RJMP 0x0235
(0054) else if(temp==3)
225 3043 CPI R20,3
226 F471 BNE 0x0235
(0055) {
(0056) LCD_Clear();
227 940E 0174 CALL _LCD_Clear
(0057) table[0]=temp;
229 834A STD Y+2,R20
(0058) table[1]=temp+1;
22A 2F84 MOV R24,R20
22B 5F8F SUBI R24,0xFF
22C 838B STD Y+3,R24
(0059) LCD_DisplayString(2,1,table);
FILE: <library>
22D 01CE MOVW R24,R28
22E 9602 ADIW R24,2
22F 8399 STD Y+1,R25
230 8388 STD Y+0,R24
231 E021 LDI R18,1
232 E002 LDI R16,2
233 940E 0180 CALL _LCD_DisplayString
235 CFC4 RJMP 0x01FA
236 9627 ADIW R28,7
237 9508 RET
pop_xgset00FC:
238 90A9 LD R10,Y+
239 90B9 LD R11,Y+
23A 90C9 LD R12,Y+
23B 90D9 LD R13,Y+
23C 90E9 LD R14,Y+
23D 90F9 LD R15,Y+
23E 9508 RET
push_xgsetF0FC:
23F 937A ST R23,-Y
240 936A ST R22,-Y
push_xgset30FC:
241 935A ST R21,-Y
242 934A ST R20,-Y
push_xgset00FC:
243 92FA ST R15,-Y
244 92EA ST R14,-Y
push_xgset003C:
245 92DA ST R13,-Y
246 92CA ST R12,-Y
247 92BA ST R11,-Y
248 92AA ST R10,-Y
249 9508 RET
push_xgset300C:
24A 935A ST R21,-Y
24B 934A ST R20,-Y
24C 92BA ST R11,-Y
24D 92AA ST R10,-Y
24E 9508 RET
pop_xgset300C:
24F 90A9 LD R10,Y+
250 90B9 LD R11,Y+
251 9149 LD R20,Y+
252 9159 LD R21,Y+
253 9508 RET
push_xgsetF00C:
254 937A ST R23,-Y
255 936A ST R22,-Y
256 935A ST R21,-Y
257 934A ST R20,-Y
258 92BA ST R11,-Y
259 92AA ST R10,-Y
25A 9508 RET
pop_xgsetF00C:
25B 90A9 LD R10,Y+
25C 90B9 LD R11,Y+
25D 9149 LD R20,Y+
25E 9159 LD R21,Y+
25F 9169 LD R22,Y+
260 9179 LD R23,Y+
261 9508 RET
push_xgset303C:
262 935A ST R21,-Y
263 934A ST R20,-Y
264 92DA ST R13,-Y
265 92CA ST R12,-Y
266 92BA ST R11,-Y
267 92AA ST R10,-Y
268 9508 RET
pop_xgset303C:
269 90A9 LD R10,Y+
26A 90B9 LD R11,Y+
26B 90C9 LD R12,Y+
26C 90D9 LD R13,Y+
26D 9149 LD R20,Y+
26E 9159 LD R21,Y+
26F 9508 RET
push_xgsetF03C:
270 937A ST R23,-Y
271 936A ST R22,-Y
272 935A ST R21,-Y
273 934A ST R20,-Y
274 92DA ST R13,-Y
275 92CA ST R12,-Y
276 92BA ST R11,-Y
277 92AA ST R10,-Y
278 9508 RET
pop_xgsetF03C:
279 90A9 LD R10,Y+
27A 90B9 LD R11,Y+
27B 90C9 LD R12,Y+
27C 90D9 LD R13,Y+
27D 9149 LD R20,Y+
27E 9159 LD R21,Y+
27F 9169 LD R22,Y+
280 9179 LD R23,Y+
281 9508 RET
lsl8:
282 2311 TST R17
283 F019 BEQ 0x0287
284 0F00 LSL R16
285 951A DEC R17
286 CFFB RJMP lsl8
287 9508 RET
lsr8:
288 2311 TST R17
289 F019 BEQ 0x028D
28A 9506 LSR R16
28B 951A DEC R17
28C CFFB RJMP lsr8
28D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -