?? key.lis
字號:
.module key.c
.area text(rom, con, rel)
0000 .dbfile D:\16實驗程序\key\key.c
0000 .dbfunc e s_ms _s_ms fV
0000 ; t -> R16,R17
.even
0000 _s_ms::
0000 .dbline -1
0000 .dbline 11
0000 ; //獨立按鍵的程序
0000 ; //使用按鍵:k1,k2,k3,k4
0000 ; //按下按鍵時相應的led會點亮
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #include<iom128v.h>
0000 ;
0000 ; //延時函數
0000 ; void s_ms(unsigned int t)
0000 ; {
0000 .dbline 12
0000 ; for(;t>1;t--)
0000 02C0 xjmp L5
0002 L2:
0002 .dbline 13
0002 ; {
0002 .dbline 14
0002 ; }
0002 L3:
0002 .dbline 12
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 L5:
0006 .dbline 12
0006 81E0 ldi R24,1
0008 90E0 ldi R25,0
000A 8017 cp R24,R16
000C 9107 cpc R25,R17
000E C8F3 brlo L2
0010 X0:
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbsym r t 16 i
0012 .dbend
0012 .dbfunc e main _main fV
0012 ; key -> R10
0012 ; tem -> R20
.even
0012 _main::
0012 .dbline -1
0012 .dbline 18
0012 ; }
0012 ;
0012 ; void main()
0012 ; {
0012 .dbline 21
0012 ; uchar tem,key;
0012 ; //端口初始化
0012 ; DDRD=0xff;
0012 8FEF ldi R24,255
0014 81BB out 0x11,R24
0016 .dbline 22
0016 ; PORTD=0xff;
0016 82BB out 0x12,R24
0018 .dbline 23
0018 ; DDRB=0x00;
0018 2224 clr R2
001A 27BA out 0x17,R2
001C .dbline 24
001C ; PORTB=0xff;
001C 88BB out 0x18,R24
001E 0AC0 xjmp L8
0020 L7:
0020 .dbline 26
0020 ; while(1)
0020 ; {
0020 .dbline 27
0020 ; tem=PINB; //讀取端口b
0020 46B3 in R20,0x16
0022 .dbline 28
0022 ; if(tem!=0xff) //判斷是否有按鍵按下
0022 4F3F cpi R20,255
0024 39F0 breq L10
0026 X1:
0026 .dbline 29
0026 ; {
0026 .dbline 30
0026 ; s_ms(500); //排除按鍵抖動和抗干擾
0026 04EF ldi R16,500
0028 11E0 ldi R17,1
002A EADF xcall _s_ms
002C .dbline 31
002C ; key=PINB;
002C A6B2 in R10,0x16
002E .dbline 32
002E ; if(key==tem)
002E A416 cp R10,R20
0030 09F4 brne L12
0032 X2:
0032 .dbline 33
0032 ; {
0032 .dbline 34
0032 ; PORTD=key; //端口D輸出按鍵值
0032 A2BA out 0x12,R10
0034 .dbline 35
0034 ; }
0034 L12:
0034 .dbline 36
0034 ; }
0034 L10:
0034 .dbline 37
0034 ; }
0034 L8:
0034 .dbline 25
0034 F5CF xjmp L7
0036 X3:
0036 .dbline -2
0036 L6:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r key 10 c
0038 .dbsym r tem 20 c
0038 .dbend
0038 ; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -