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

📄 4key.lst

📁 AVR单片机控制下的实时按键显示,已测试通过
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"4key.c"
   2               		.arch atmega16
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  51               	.global	ledcode
  52               		.data
  55               	ledcode:
  56 0000 3F        		.byte	63
  57 0001 06        		.byte	6
  58 0002 5B        		.byte	91
  59 0003 4F        		.byte	79
  60 0004 66        		.byte	102
  61 0005 6D        		.byte	109
  62 0006 7D        		.byte	125
  63 0007 07        		.byte	7
  64 0008 7F        		.byte	127
  65 0009 67        		.byte	103
  66 000a 77        		.byte	119
  67 000b 7C        		.byte	124
  68 000c 58        		.byte	88
  69 000d 5E        		.byte	94
  70 000e 79        		.byte	121
  71 000f 71        		.byte	113
  74               	ScanCode.0:
  75 0010 F7        		.byte	-9
  76               		.lcomm Time.1,1
  77               		.lcomm led.2,1
  78               		.lcomm ledcurrent.3,1
  79               		.lcomm ledlast.4,1
  80               		.text
  82               	.global	Keyboard
  84               	Keyboard:
   1:D:/ouyangyingqian/four/4key.c **** #include <avr/io.h>
   2:D:/ouyangyingqian/four/4key.c **** #include <avr/signal.h>
   3:D:/ouyangyingqian/four/4key.c **** #include <avr/interrupt.h>
   4:D:/ouyangyingqian/four/4key.c **** #include <inttypes.h>
   5:D:/ouyangyingqian/four/4key.c **** #include <keyboard.h>
   6:D:/ouyangyingqian/four/4key.c **** 
   7:D:/ouyangyingqian/four/4key.c **** 
   8:D:/ouyangyingqian/four/4key.c **** uint8_t ledcode[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67,0x77,0x7C,0x58,0x5E,0x79,0x7
   9:D:/ouyangyingqian/four/4key.c **** 
  10:D:/ouyangyingqian/four/4key.c **** 
  11:D:/ouyangyingqian/four/4key.c **** uint8_t Keyboard(void)
  12:D:/ouyangyingqian/four/4key.c **** {
  86               	.LM1:
  87               	/* prologue: frame size=0 */
  88 0000 9F92      		push r9
  89 0002 AF92      		push r10
  90 0004 BF92      		push r11
  91 0006 CF92      		push r12
  92 0008 DF92      		push r13
  93 000a EF92      		push r14
  94 000c FF92      		push r15
  95 000e 0F93      		push r16
  96 0010 1F93      		push r17
  97 0012 CF93      		push r28
  98               	/* prologue end (size=10) */
  99 0014 5091 0000 		lds r21,ScanCode.0
 100 0018 9090 0000 		lds r9,ledcode
 101 001c 9091 0000 		lds r25,led.2
 102 0020 4091 0000 		lds r20,Time.1
 103 0024 A090 0000 		lds r10,ledcode+1
 104 0028 B090 0000 		lds r11,ledcode+2
 105 002c C090 0000 		lds r12,ledcode+3
 106 0030 D090 0000 		lds r13,ledcode+4
 107 0034 E090 0000 		lds r14,ledcode+5
 108 0038 F090 0000 		lds r15,ledcode+6
 109 003c 0091 0000 		lds r16,ledcode+7
 110 0040 1091 0000 		lds r17,ledcode+8
 111 0044 C091 0000 		lds r28,ledcode+9
 112 0048 B091 0000 		lds r27,ledcode+10
 113 004c A091 0000 		lds r26,ledcode+11
 114 0050 F091 0000 		lds r31,ledcode+12
 115 0054 E091 0000 		lds r30,ledcode+13
 116 0058 7091 0000 		lds r23,ledcode+14
 117 005c 6091 0000 		lds r22,ledcode+15
 118               	.L2:
  13:D:/ouyangyingqian/four/4key.c **** static uint8_t ScanCode=0xF7,Time=0,led=0x00,ledcurrent=0x00,ledlast=0x00;
  14:D:/ouyangyingqian/four/4key.c **** 	do			//键盘扫描
  15:D:/ouyangyingqian/four/4key.c **** 		{
  16:D:/ouyangyingqian/four/4key.c **** 		switch(ScanCode)	//扫描信号
 120               	.LM2:
 121 0060 252F      		mov r18,r21
 122 0062 3327      		clr r19
 123 0064 2B3F      		cpi r18,251
 124 0066 3105      		cpc r19,__zero_reg__
 125 0068 69F0      		breq .L7
 126 006a 2C3F      		cpi r18,252
 127 006c 3105      		cpc r19,__zero_reg__
 128 006e 24F4      		brge .L11
 129 0070 273F      		cpi r18,247
 130 0072 3105      		cpc r19,__zero_reg__
 131 0074 29F0      		breq .L6
 132 0076 0AC0      		rjmp .L10
 133               	.L11:
 134 0078 2D3F      		cpi r18,253
 135 007a 3105      		cpc r19,__zero_reg__
 136 007c 29F0      		breq .L8
 137 007e 06C0      		rjmp .L10
 138               	.L6:
  17:D:/ouyangyingqian/four/4key.c **** 			{   
  18:D:/ouyangyingqian/four/4key.c ****    // 扫描信号从0111-1011
  19:D:/ouyangyingqian/four/4key.c **** 				case 0XF7: ScanCode=0XFB;break;
 140               	.LM3:
 141 0080 5BEF      		ldi r21,lo8(-5)
 142 0082 05C0      		rjmp .L5
 143               	.L7:
  20:D:/ouyangyingqian/four/4key.c ****    // 扫描信号从1011-1101
  21:D:/ouyangyingqian/four/4key.c **** 			     case 0XFB: ScanCode=0XFD;break;
 145               	.LM4:
 146 0084 5DEF      		ldi r21,lo8(-3)
 147 0086 03C0      		rjmp .L5
 148               	.L8:
  22:D:/ouyangyingqian/four/4key.c ****    //扫描信号从1101-1110
  23:D:/ouyangyingqian/four/4key.c **** 				case 0XFD: ScanCode=0XFE;break;
 150               	.LM5:
 151 0088 5EEF      		ldi r21,lo8(-2)
 152 008a 01C0      		rjmp .L5
 153               	.L10:
  24:D:/ouyangyingqian/four/4key.c ****    //扫描信号从1110-0111
  25:D:/ouyangyingqian/four/4key.c **** 				case 0XFE: ScanCode=0XF7;break;
  26:D:/ouyangyingqian/four/4key.c **** 				default: {ScanCode=0XF7;break;}
 155               	.LM6:
 156 008c 57EF      		ldi r21,lo8(-9)
 157               	.L5:
  27:D:/ouyangyingqian/four/4key.c **** 			}
  28:D:/ouyangyingqian/four/4key.c **** 
  29:D:/ouyangyingqian/four/4key.c ****     /*在main()函数里需将DDRC设成0x0F,即PC7~PC4为输入,PC3~PC0为输出。
  30:D:/ouyangyingqian/four/4key.c ****     下面PORTC=ScanCode意味着,将PC7~PC4设为带上拉功能的输入,
  31:D:/ouyangyingqian/four/4key.c ****     而PC3~PC0输出扫描信号。*/
  32:D:/ouyangyingqian/four/4key.c **** 		KEY_PORT=ScanCode;
 159               	.LM7:
 160 008e 55BB      		out 53-0x20,r21
  33:D:/ouyangyingqian/four/4key.c **** 
  34:D:/ouyangyingqian/four/4key.c **** /*键值判断,有按键时,将键值赋予led ,否则计数变量time加1*/
  35:D:/ouyangyingqian/four/4key.c **** 		switch(KEY_PIN)	        // 解读行列电平值与按键值的关系			
 162               	.LM8:
 163 0090 83B3      		in r24,51-0x20
 164 0092 282F      		mov r18,r24
 165 0094 3327      		clr r19
 166 0096 2E3B      		cpi r18,190
 167 0098 3105      		cpc r19,__zero_reg__
 168 009a 09F4      		brne .+2
 169 009c 6AC0      		rjmp .L27
 170 009e 2F3B      		cpi r18,191
 171 00a0 3105      		cpc r19,__zero_reg__
 172 00a2 34F5      		brge .L30
 173 00a4 2E37      		cpi r18,126
 174 00a6 3105      		cpc r19,__zero_reg__
 175 00a8 09F4      		brne .+2
 176 00aa 65C0      		rjmp .L28
 177 00ac 2F37      		cpi r18,127
 178 00ae 3105      		cpc r19,__zero_reg__
 179 00b0 8CF4      		brge .L31
 180 00b2 2B37      		cpi r18,123
 181 00b4 3105      		cpc r19,__zero_reg__
 182 00b6 09F4      		brne .+2
 183 00b8 4EC0      		rjmp .L20
 184 00ba 2C37      		cpi r18,124
 185 00bc 3105      		cpc r19,__zero_reg__
 186 00be 2CF4      		brge .L32
 187 00c0 2737      		cpi r18,119
 188 00c2 3105      		cpc r19,__zero_reg__
 189 00c4 09F4      		brne .+2
 190 00c6 3FC0      		rjmp .L16
 191 00c8 59C0      		rjmp .L29
 192               	.L32:
 193 00ca 2D37      		cpi r18,125
 194 00cc 3105      		cpc r19,__zero_reg__
 195 00ce 09F4      		brne .+2
 196 00d0 4AC0      		rjmp .L24
 197 00d2 54C0      		rjmp .L29
 198               	.L31:
 199 00d4 2B3B      		cpi r18,187
 200 00d6 3105      		cpc r19,__zero_reg__
 201 00d8 E1F1      		breq .L19
 202 00da 2C3B      		cpi r18,188
 203 00dc 3105      		cpc r19,__zero_reg__
 204 00de 24F4      		brge .L33
 205 00e0 273B      		cpi r18,183
 206 00e2 3105      		cpc r19,__zero_reg__
 207 00e4 71F1      		breq .L15
 208 00e6 4AC0      		rjmp .L29
 209               	.L33:
 210 00e8 2D3B      		cpi r18,189
 211 00ea 3105      		cpc r19,__zero_reg__
 212 00ec D1F1      		breq .L23
 213 00ee 46C0      		rjmp .L29
 214               	.L30:
 215 00f0 2E3D      		cpi r18,222
 216 00f2 3105      		cpc r19,__zero_reg__
 217 00f4 E1F1      		breq .L26
 218 00f6 2F3D      		cpi r18,223
 219 00f8 3105      		cpc r19,__zero_reg__
 220 00fa 74F4      		brge .L34
 221 00fc 2B3D      		cpi r18,219
 222 00fe 3105      		cpc r19,__zero_reg__
 223 0100 31F1      		breq .L18
 224 0102 2C3D      		cpi r18,220
 225 0104 3105      		cpc r19,__zero_reg__
 226 0106 24F4      		brge .L35
 227 0108 273D      		cpi r18,215
 228 010a 3105      		cpc r19,__zero_reg__
 229 010c C1F0      		breq .L14
 230 010e 36C0      		rjmp .L29
 231               	.L35:
 232 0110 2D3D      		cpi r18,221
 233 0112 3105      		cpc r19,__zero_reg__
 234 0114 21F1      		breq .L22
 235 0116 32C0      		rjmp .L29
 236               	.L34:
 237 0118 2B3E      		cpi r18,235
 238 011a 3105      		cpc r19,__zero_reg__
 239 011c B1F0      		breq .L17
 240 011e 2C3E      		cpi r18,236
 241 0120 3105      		cpc r19,__zero_reg__
 242 0122 24F4      		brge .L36
 243 0124 273E      		cpi r18,231
 244 0126 3105      		cpc r19,__zero_reg__
 245 0128 41F0      		breq .L13
 246 012a 28C0      		rjmp .L29
 247               	.L36:
 248 012c 2D3E      		cpi r18,237
 249 012e 3105      		cpc r19,__zero_reg__
 250 0130 A1F0      		breq .L21
 251 0132 2E3E      		cpi r18,238
 252 0134 3105      		cpc r19,__zero_reg__
 253 0136 C9F0      		breq .L25
 254 0138 21C0      		rjmp .L29
 255               	.L13:
  36:D:/ouyangyingqian/four/4key.c **** 			{
  37:D:/ouyangyingqian/four/4key.c **** 				case keycode0: led=ledcode[0];Time=0;break;
 257               	.LM9:
 258 013a 992D      		mov r25,r9
 259 013c 1DC0      		rjmp .L40
 260               	.L14:
  38:D:/ouyangyingqian/four/4key.c **** 				case keycode1: led=ledcode[1];Time=0;break;
 262               	.LM10:
 263 013e 9A2D      		mov r25,r10
 264 0140 1BC0      		rjmp .L40
 265               	.L15:
  39:D:/ouyangyingqian/four/4key.c **** 				case keycode2: led=ledcode[2];Time=0;break;
 267               	.LM11:
 268 0142 9B2D      		mov r25,r11
 269 0144 19C0      		rjmp .L40
 270               	.L16:
  40:D:/ouyangyingqian/four/4key.c **** 				case keycode3: led=ledcode[3];Time=0;break;
 272               	.LM12:
 273 0146 9C2D      		mov r25,r12
 274 0148 17C0      		rjmp .L40
 275               	.L17:
  41:D:/ouyangyingqian/four/4key.c **** 				case keycode4: led=ledcode[4];Time=0;break;
 277               	.LM13:
 278 014a 9D2D      		mov r25,r13
 279 014c 15C0      		rjmp .L40
 280               	.L18:
  42:D:/ouyangyingqian/four/4key.c **** 				case keycode5: led=ledcode[5];Time=0;break;
 282               	.LM14:
 283 014e 9E2D      		mov r25,r14
 284 0150 13C0      		rjmp .L40
 285               	.L19:
  43:D:/ouyangyingqian/four/4key.c **** 				case keycode6: led=ledcode[6];Time=0;break;
 287               	.LM15:
 288 0152 9F2D      		mov r25,r15

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -