⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prj.lst

📁 ATMEGA128控制4×6矩阵键盘,LCD1602 使用protues软件可仿真 附带图片可观看效果
💻 LST
📖 第 1 页 / 共 3 页
字号:
     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 + -