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

📄 sl07.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
         ;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口接数码管,作字线
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	;选种一位数码管
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		;无键按下循环检测
          jiance0:
00003c b303      	in r16,pinc
00003d ff07      	sbrs r16,7		;检测键“F”是否按下
00003e d093      	rcall	jianf		;按下则执行“F”键的程序
00003f ff06      	sbrs r16,6		;检测键“E”是否按下
000040 d090      	rcall	jiane		;按下则执行“E”键的程序
000041 ff05      	sbrs r16,5		;检测键“D”是否按下
000042 d08d      	rcall	jiand		;按下则执行“D”键的程序
000043 ff04      	sbrs r16,4		;检测键“C”是否按下
000044 d08a      	rcall	jianc		;按下则执行“C”键的程序
000045 cfec      	rjmp	jiance11
          jiance1:
000046 b303      	in r16,pinc
000047 ff07      	sbrs r16,7		;检测“B”键是否按下
000048 d085      	rcall	jianb		;按下则执行“B”键的程序
000049 ff06      	sbrs r16,6		;检测“A”键是否按下
00004a d082      	rcall	jiana		;按下则执行“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		;循环检测键盘
         
          jian0:	
000066 9bc0      	sbis portb,0		;翻转PB0的输出状态
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		;翻转PB1的输出状态
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		;翻转PB2的输出状态
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		;翻转PB3的输出状态
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		;翻转PB4的输出状态
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		;翻转PB5的输出状态
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		;翻转PB6的输出状态
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		;翻转PB7的输出状态
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:			;让数码管显示特定的字符	
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:			;改变数码管的位线
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.

⌨️ 快捷键说明

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