?? sl07.lst
字號:
;UCR
.equ RXCIE =7
.equ TXCIE =6
.equ UDRIE =5
.equ RXEN =4
.equ TXEN =3
.equ CHR9 =2
.equ RXB8 =1
.equ TXB8 =0
;ACSR
.equ ACD =7
.equ ACO =5
.equ ACI =4
.equ ACIE =3
.equ ACIC =2
.equ ACIS1 =1
.equ ACIS0 =0
.def XL =r26
.def XH =r27
.def YL =r28
.def YH =r29
.def ZL =r30
.def ZH =r31
.equ RAMEND =$25F ;Last On-Chip SRAM Location
.equ XRAMEND =$FFFF
.equ E2END =$1FF
.equ FLASHEND=$FFF
.equ INT0addr=$001 ;External Interrupt0 Vector Address
.equ INT1addr=$002 ;External Interrupt1 Vector Address
.equ ICP1addr=$003 ;Input Capture1 Interrupt Vector Address
.equ OC1Aaddr=$004 ;Output Compare1A Interrupt Vector Address
.equ OC1Baddr=$005 ;Output Compare1B Interrupt Vector Address
.equ OVF1addr=$006 ;Overflow1 Interrupt Vector Address
.equ OVF0addr=$007 ;Overflow0 Interrupt Vector Address
.equ SPIaddr =$008 ;SPI Interrupt Vector Address
.equ URXCaddr=$009 ;UART Receive Complete Interrupt Vector Address
.equ UDREaddr=$00a ;UART Data Register Empty Interrupt Vector Address
.equ UTXCaddr=$00b ;UART Transmit Complete Interrupt Vector Address
.equ ACIaddr =$00c ;Analog Comparator Interrupt Vector Address
.org $000
000000 c01f rjmp sl07
.org $020
sl07:
000020 e012 ldi r17,$02 ;棧指針置初值SP=0x025F
000021 e50f ldi r16,$5f
000022 bf1e out sph,r17
000023 bf0d out spl,r16
000024 e01f ldi r17,$0f ;PC口接4*4的十六鍵鍵盤
000025 bb14 out ddrc,r17
000026 ef0f ldi r16,$ff
000027 bb07 out ddrb,r16 ;PB口接數(shù)碼管,作字線
000028 bb05 out portc,r16
000029 bb08 out portb,r16 ;PD口作位線
00002a bb01 out ddrd,r16
00002b bb02 out portd,r16
00002c e75f ldi r21,$7f ;選種一位數(shù)碼管
00002d bb52 out portd,r21
00002e 2744 clr r20
jiance:
00002f ef1e ldi r17,$fe ;讓PC0輸出為0
000030 bb15 out portc,r17
000031 c00a rjmp jiance0 ;檢測是否有鍵按下
jiance11:
000032 ef1d ldi r17,$fd ;讓PC1輸出為0
000033 bb15 out portc,r17
000034 c011 rjmp jiance1 ;檢測是否有鍵按下
jiance22:
000035 ef1b ldi r17,$fb ;讓PC2輸出為0
000036 bb15 out portc,r17
000037 c018 rjmp jiance2 ;檢測是否有鍵按下
jiance33:
000038 ef17 ldi r17,$f7 ;讓PC3輸出為0
000039 bb15 out portc,r17
00003a c01f rjmp jiance3 ;檢測是否有鍵按下
00003b cff3 rjmp jiance ;無鍵按下循環(huán)檢測
jiance0:
00003c b303 in r16,pinc
00003d ff07 sbrs r16,7 ;檢測鍵“F”是否按下
00003e d093 rcall jianf ;按下則執(zhí)行“F”鍵的程序
00003f ff06 sbrs r16,6 ;檢測鍵“E”是否按下
000040 d090 rcall jiane ;按下則執(zhí)行“E”鍵的程序
000041 ff05 sbrs r16,5 ;檢測鍵“D”是否按下
000042 d08d rcall jiand ;按下則執(zhí)行“D”鍵的程序
000043 ff04 sbrs r16,4 ;檢測鍵“C”是否按下
000044 d08a rcall jianc ;按下則執(zhí)行“C”鍵的程序
000045 cfec rjmp jiance11
jiance1:
000046 b303 in r16,pinc
000047 ff07 sbrs r16,7 ;檢測“B”鍵是否按下
000048 d085 rcall jianb ;按下則執(zhí)行“B”鍵的程序
000049 ff06 sbrs r16,6 ;檢測“A”鍵是否按下
00004a d082 rcall jiana ;按下則執(zhí)行“A”鍵的程序
00004b ff05 sbrs r16,5 ;檢測鍵“9”是否按下
00004c d076 rcall jian9
00004d ff04 sbrs r16,4
00004e d067 rcall jian8 ;檢測鍵“8”是否按下
00004f cfe5 rjmp jiance22
jiance2:
000050 b303 in r16,pinc
000051 ff07 sbrs r16,7 ;檢測鍵“7”是否按下
000052 d059 rcall jian7
000053 ff06 sbrs r16,6 ;檢測鍵“6”是否按下
000054 d04d rcall jian6
000055 ff05 sbrs r16,5 ;檢測鍵“5”是否按下
000056 d041 rcall jian5
000057 ff04 sbrs r16,4 ;檢測鍵“4”是否按下
000058 d035 rcall jian4
000059 cfde rjmp jiance33
jiance3:
00005a b303 in r16,pinc
00005b ff07 sbrs r16,7 ;檢測鍵“3”是否按下
00005c d027 rcall jian3
00005d ff06 sbrs r16,6 ;檢測鍵“2”是否按下
00005e d01b rcall jian2
00005f ff05 sbrs r16,5 ;檢測鍵“1”是否按下
000060 d00f rcall jian1
000061 ff04 sbrs r16,4 ;檢測鍵“0”是否按下
000062 d003 rcall jian0
000063 e062 ldi r22,2
000064 d076 rcall delay
000065 cfc9 rjmp jiance ;循環(huán)檢測鍵盤
jian0:
000066 9bc0 sbis portb,0 ;翻轉(zhuǎn)PB0的輸出狀態(tài)
000067 c002 rjmp jian00
000068 98c0 cbi portb,0
000069 c001 rjmp jian000
00006a 9ac0 jian00: sbi portb,0
jian000:
00006b b303 in r16,pinc
00006c ff04 sbrs r16,4
00006d cffd rjmp jian000
00006e 2744 clr r20
00006f 9508 ret
jian1:
000070 9bc1 sbis portb,1 ;翻轉(zhuǎn)PB1的輸出狀態(tài)
000071 c002 rjmp jian11
000072 98c1 cbi portb,1
000073 c001 rjmp jian111
000074 9ac1 jian11: sbi portb,1
jian111:
000075 b303 in r16,pinc
000076 ff05 sbrs r16,5
000077 cffd rjmp jian111
000078 2744 clr r20
000079 9508 ret
jian2:
00007a 9bc2 sbis portb,2 ;翻轉(zhuǎn)PB2的輸出狀態(tài)
00007b c002 rjmp jian22
00007c 98c2 cbi portb,2
00007d c001 rjmp jian222
00007e 9ac2 jian22: sbi portb,2
jian222:
00007f b303 in r16,pinc
000080 ff06 sbrs r16,6
000081 cffd rjmp jian222
000082 2744 clr r20
000083 9508 ret
jian3:
000084 9bc3 sbis portb,3 ;翻轉(zhuǎn)PB3的輸出狀態(tài)
000085 c002 rjmp jian33
000086 98c3 cbi portb,3
000087 c001 rjmp jian333
000088 9ac3 jian33: sbi portb,3
jian333:
000089 b303 in r16,pinc
00008a ff07 sbrs r16,7
00008b cffd rjmp jian333
00008c 2744 clr r20
00008d 9508 ret
jian4:
00008e 9bc4 sbis portb,4 ;翻轉(zhuǎn)PB4的輸出狀態(tài)
00008f c002 rjmp jian44
000090 98c4 cbi portb,4
000091 c001 rjmp jian444
000092 9ac4 jian44: sbi portb,4
jian444:
000093 b303 in r16,pinc
000094 ff04 sbrs r16,4
000095 cffd rjmp jian444
000096 2744 clr r20
000097 9508 ret
jian5:
000098 9bc5 sbis portb,5 ;翻轉(zhuǎn)PB5的輸出狀態(tài)
000099 c002 rjmp jian55
00009a 98c5 cbi portb,5
00009b c001 rjmp jian555
00009c 9ac5 jian55: sbi portb,5
jian555:
00009d b303 in r16,pinc
00009e ff05 sbrs r16,5
00009f cffd rjmp jian555
0000a0 2744 clr r20
0000a1 9508 ret
jian6:
0000a2 9bc6 sbis portb,6 ;翻轉(zhuǎn)PB6的輸出狀態(tài)
0000a3 c002 rjmp jian66
0000a4 98c6 cbi portb,6
0000a5 c001 rjmp jian666
0000a6 9ac6 jian66: sbi portb,6
jian666:
0000a7 b303 in r16,pinc
0000a8 ff06 sbrs r16,6
0000a9 cffd rjmp jian666
0000aa 2744 clr r20
0000ab 9508 ret
jian7:
0000ac 9bc7 sbis portb,7 ;翻轉(zhuǎn)PB7的輸出狀態(tài)
0000ad c002 rjmp jian77
0000ae 98c7 cbi portb,7
0000af c001 rjmp jian777
0000b0 9ac7 jian77: sbi portb,7
jian777:
0000b1 b303 in r16,pinc
0000b2 ff07 sbrs r16,7
0000b3 cffd rjmp jian777
0000b4 2744 clr r20
0000b5 9508 ret
jian8: ;讓數(shù)碼管顯示特定的字符
0000b6 e0f1 ldi zh,high(tab*2)
0000b7 eae6 ldi zl,low(tab*2)
0000b8 0fe4 add zl,r20
0000b9 95c8 lpm
0000ba ba08 out portb,r0
0000bb 9543 inc r20
0000bc 3140 cpi r20,$10
0000bd f008 brlo jian888
0000be 2744 clr r20
jian888:
0000bf b303 in r16,pinc
0000c0 ff04 sbrs r16,4
0000c1 cffd rjmp jian888
0000c2 9508 ret
jian9: ;改變數(shù)碼管的位線
0000c3 9408 sec
0000c4 9557 ror r21
0000c5 3f57 cpi r21,$f7
0000c6 f409 brne jian99
0000c7 e75f ldi r21,$7f
0000c8 bb52 jian99: out portd,r21
jian999:
0000c9 b303 in r16,pinc
0000ca ff05 sbrs r16,5
0000cb cffd rjmp jian999
0000cc 9508 ret
jiana: ;無效鍵
0000cd 9508 ret
jianb:
0000ce 9508 ret
jianc:
0000cf 9508 ret
jiand:
0000d0 9508 ret
jiane:
0000d1 9508 ret
jianf:
0000d2 9508 ret
0000d3 tab: .db $c0,$f9,$a4,$b0,$99,$92,$82,$f8,$80,$90
0000d3 f9c0
0000d4 b0a4
0000d5 9299
0000d6 f882
0000d7 9080
.db $88,$83,$c6,$a1,$86,$8e
0000d8 8388
0000d9 a1c6
0000da 8e86
delay: ;延時
0000db e070 t1: ldi r23,$200
0000dc e080 t2: ldi r24,$200
0000dd 958a t3: dec r24
0000de f7f1 brne t3
0000df 957a dec r23
0000e0 f7d9 brne t2
0000e1 956a dec r22
0000e2 f7c1 brne t1
0000e3 9508 ret
Assembly complete with no errors.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -