?? 4x4key.lis
字號(hào):
00D8 DB98 cbi 0x1b,3
00DA .dbline 146
00DA ;
00DA ; if((KEY_IN&H1)==H1) return L4_H1;
00DA 89B3 in R24,0x19
00DC 8071 andi R24,16
00DE 8031 cpi R24,16
00E0 11F4 brne L28
00E2 .dbline 146
00E2 03E0 ldi R16,3
00E4 13C0 xjmp L3
00E6 L28:
00E6 .dbline 147
00E6 ; if((KEY_IN&H2)==H2) return L4_H2;
00E6 89B3 in R24,0x19
00E8 8072 andi R24,32
00EA 8032 cpi R24,32
00EC 11F4 brne L30
00EE .dbline 147
00EE 07E0 ldi R16,7
00F0 0DC0 xjmp L3
00F2 L30:
00F2 .dbline 148
00F2 ; if((KEY_IN&H3)==H3) return L4_H3;
00F2 89B3 in R24,0x19
00F4 8074 andi R24,64
00F6 8034 cpi R24,64
00F8 11F4 brne L32
00FA .dbline 148
00FA 0BE0 ldi R16,11
00FC 07C0 xjmp L3
00FE L32:
00FE .dbline 149
00FE ; if((KEY_IN&H4)==H4) return L4_H4;
00FE 89B3 in R24,0x19
0100 8078 andi R24,128
0102 8038 cpi R24,128
0104 11F4 brne L34
0106 .dbline 149
0106 0FE0 ldi R16,15
0108 01C0 xjmp L3
010A L34:
010A .dbline 151
010A ;
010A ; return ON_PUSH;
010A 0FEF ldi R16,255
010C .dbline -2
010C L3:
010C .dbline 0 ; func end
010C 0895 ret
010E .dbend
010E .dbfunc e Read_Key _Read_Key fV
.even
010E _Read_Key::
010E 0E940000 xcall push_gset1
0112 .dbline -1
0112 .dbline 157
0112 ;
0112 ; }
0112 ;
0112 ; //=======================================================================
0112 ; void Read_Key(void)
0112 ; {
0112 .dbline 158
0112 ; switch(Key_State)
0112 40910100 lds R20,_Key_State
0116 5527 clr R21
0118 4030 cpi R20,0
011A 4507 cpc R20,R21
011C 49F0 breq L40
011E X0:
011E 4130 cpi R20,1
0120 E0E0 ldi R30,0
0122 5E07 cpc R21,R30
0124 71F0 breq L43
0126 4230 cpi R20,2
0128 E0E0 ldi R30,0
012A 5E07 cpc R21,R30
012C E1F0 breq L46
012E 21C0 xjmp L37
0130 X1:
0130 .dbline 159
0130 ; {
0130 L40:
0130 .dbline 161
0130 ; case 0:
0130 ; if(KEYDIN() != ON_PUSH)
0130 80DF xcall _KEYDIN
0132 0F3F cpi R16,255
0134 F1F0 breq L38
0136 .dbline 162
0136 ; {
0136 .dbline 163
0136 ; Key_State++;
0136 80910100 lds R24,_Key_State
013A 8F5F subi R24,255 ; addi 1
013C 80930100 sts _Key_State,R24
0140 .dbline 164
0140 ; }
0140 .dbline 165
0140 ; break;
0140 18C0 xjmp L38
0142 L43:
0142 .dbline 167
0142 ; case 1:
0142 ; if(KEYDIN() != ON_PUSH)
0142 77DF xcall _KEYDIN
0144 0F3F cpi R16,255
0146 49F0 breq L44
0148 .dbline 168
0148 ; {
0148 .dbline 169
0148 ; Key_State++;
0148 80910100 lds R24,_Key_State
014C 8F5F subi R24,255 ; addi 1
014E 80930100 sts _Key_State,R24
0152 .dbline 170
0152 ; Key_Value=KEYDIN();
0152 6FDF xcall _KEYDIN
0154 00930000 sts _Key_Value,R16
0158 .dbline 171
0158 ; }
0158 0CC0 xjmp L38
015A L44:
015A .dbline 173
015A ; else
015A ; {
015A .dbline 174
015A ; Key_State--;
015A 80910100 lds R24,_Key_State
015E 8150 subi R24,1
0160 80930100 sts _Key_State,R24
0164 .dbline 175
0164 ; }
0164 .dbline 176
0164 ; break;
0164 06C0 xjmp L38
0166 L46:
0166 .dbline 178
0166 ; case 2:
0166 ; if(KEYDIN() == ON_PUSH)
0166 65DF xcall _KEYDIN
0168 0F3F cpi R16,255
016A 19F4 brne L38
016C .dbline 179
016C ; {
016C .dbline 180
016C ; Key_State=0;
016C 2224 clr R2
016E 20920100 sts _Key_State,R2
0172 .dbline 181
0172 ; }
0172 .dbline 182
0172 ; break;
0172 L37:
0172 L38:
0172 .dbline -2
0172 L36:
0172 0E940000 xcall pop_gset1
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbend
0178 .dbfunc e main _main fV
.even
0178 _main::
0178 .dbline -1
0178 .dbline 188
0178 ; }
0178 ;
0178 ; }
0178 ;
0178 ; void main(void)
0178 ; {
0178 .dbline 189
0178 ; KEY_Init();
0178 43DF xcall _KEY_Init
017A .dbline 191
017A ;
017A ; Key_State = 0;
017A 2224 clr R2
017C 20920100 sts _Key_State,R2
0180 .dbline 192
0180 ; Key_Value = ON_PUSH;
0180 8FEF ldi R24,255
0182 80930000 sts _Key_Value,R24
0186 .dbline 194
0186 ;
0186 ; Uart_Init(); //TART初始化
0186 0DD0 xcall _Uart_Init
0188 .dbline 195
0188 ; SEI(); //全局中斷使能
0188 7894 sei
018A 09C0 xjmp L51
018C L50:
018C .dbline 198
018C ;
018C ; while(1)
018C ; {
018C .dbline 199
018C ; if(Key_Value != ON_PUSH)
018C 80910000 lds R24,_Key_Value
0190 8F3F cpi R24,255
0192 29F0 breq L53
0194 .dbline 200
0194 ; {
0194 .dbline 201
0194 ; USART_TXD(Key_Value);
0194 082F mov R16,R24
0196 0ED0 xcall _USART_TXD
0198 .dbline 202
0198 ; Key_Value = ON_PUSH;
0198 8FEF ldi R24,255
019A 80930000 sts _Key_Value,R24
019E .dbline 203
019E ; }
019E L53:
019E .dbline 204
019E L51:
019E .dbline 197
019E F6CF xjmp L50
01A0 X2:
01A0 .dbline -2
01A0 L49:
01A0 .dbline 0 ; func end
01A0 0895 ret
01A2 .dbend
01A2 .dbfunc e Uart_Init _Uart_Init fV
.even
01A2 _Uart_Init::
01A2 .dbline -1
01A2 .dbline 209
01A2 ; }
01A2 ; }
01A2 ;
01A2 ; //===============================================================
01A2 ; void Uart_Init(void) //UART初始化
01A2 ; {
01A2 .dbline 213
01A2 ;
01A2 ; //設(shè)置偵格式
01A2 ; //異步,8位數(shù)據(jù),無奇偶校驗(yàn),一個(gè)停止位,無倍速
01A2 ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
01A2 86E8 ldi R24,134
01A4 80BD out 0x20,R24
01A6 .dbline 216
01A6 ;
01A6 ; //設(shè)置波特率
01A6 ; UBRRL= (F_osc/Baud_rate/16-1)%256;
01A6 8FE2 ldi R24,47
01A8 89B9 out 0x9,R24
01AA .dbline 217
01AA ; UBRRH= (F_osc/Baud_rate/16-1)/256;
01AA 2224 clr R2
01AC 20BC out 0x20,R2
01AE .dbline 220
01AE ;
01AE ; //使能接收中斷,使能接收,使能發(fā)送
01AE ; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
01AE 88E9 ldi R24,152
01B0 8AB9 out 0xa,R24
01B2 .dbline -2
01B2 L55:
01B2 .dbline 0 ; func end
01B2 0895 ret
01B4 .dbend
01B4 .dbfunc e USART_TXD _USART_TXD fV
01B4 ; data -> R16
.even
01B4 _USART_TXD::
01B4 .dbline -1
01B4 .dbline 226
01B4 ; }
01B4 ;
01B4 ;
01B4 ; //===============================================================
01B4 ; void USART_TXD(uint8 data) //發(fā)送采用查詢方式
01B4 ; {
01B4 L57:
01B4 .dbline 227
01B4 L58:
01B4 .dbline 227
01B4 ; while( !(UCSRA & BIT(UDRE)) );
01B4 5D9B sbis 0xb,5
01B6 FECF rjmp L57
01B8 .dbline 228
01B8 ; UDR=data;
01B8 0CB9 out 0xc,R16
01BA L60:
01BA .dbline 229
01BA L61:
01BA .dbline 229
01BA ; while( !(UCSRA & BIT(TXC )) );
01BA 5E9B sbis 0xb,6
01BC FECF rjmp L60
01BE .dbline 230
01BE ; UCSRA|=BIT(TXC);
01BE 5E9A sbi 0xb,6
01C0 .dbline -2
01C0 L56:
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbsym r data 16 c
01C2 .dbend
.area vector(rom, abs)
.org 44
002C 0C94E100 jmp _USART_RXC
.area text(rom, con, rel)
01C2 .dbfile E:\MYWORK~1\開發(fā)設(shè)計(jì)\EasyAVR\程序范例\Mega16例程\4x4key\4x4key.c
01C2 .dbfunc e USART_RXC _USART_RXC fV
.even
01C2 _USART_RXC::
01C2 .dbline -1
01C2 .dbline 237
01C2 ; }
01C2 ;
01C2 ; //=======================================================================
01C2 ;
01C2 ; #pragma interrupt_handler USART_RXC:12
01C2 ; void USART_RXC(void)
01C2 ; {
01C2 .dbline -2
01C2 L63:
01C2 .dbline 0 ; func end
01C2 1895 reti
01C4 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\MYWORK~1\開發(fā)設(shè)計(jì)\EasyAVR\程序范例\Mega16例程\4x4key\4x4key.c
0000 _Key_Value::
0000 .blkb 1
0001 .dbsym e Key_Value _Key_Value c
0001 _Key_State::
0001 .blkb 1
0002 .dbsym e Key_State _Key_State c
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -