📄 slavr733.lst
字号:
AVRASM ver. 1.30 SLAVR733.ASM Mon Nov 27 07:51:38 2000
;SL-AVR开发实验器键盘扫描程序(16个数字键,还有命令键,一个换档键)
000000 SCAN1: push xh ;键扫显示子程序。
error : Illegal argument type or count
000001 PUSH XL ;将xl压入堆栈
error : Illegal argument type or count
000002 PUSH TEMP3
error : Illegal argument type or count
000003 PUSH TEMP2
error : Illegal argument type or count
000004 PUSH TEMP1
error : Illegal argument type or count
000005 PUSH TEMP
error : Illegal argument type or count
000006 LDI XL,$60
error : Illegal argument type or count
000007 9468 SET ;T标志为1表示未按键
000008 LDI SCNN,$00 ;按键起始扫描码SCNN为00
error : Illegal argument type or count
000009 LDI SCNDP,0B11011111 ;令6位七段LED扫描显示码初始为11011111
error : Illegal argument type or count
00000a LDI CNT,$06 ;七段LED共6位故CNT=6为位数计数
error : Illegal argument type or count
00000b LDI KSNI,0B11110111 ;4*4键盘扫描码KSNI初始为11110111
error : Illegal argument type or count
00000c COL1: LDI TEMP,$FF ;PORTB设定为输出
error : Illegal argument type or count
00000d OUT DDRb,TEMP
error : Undefined variable referenced
00000e OUT DDRC,TEMP ;PORTC设定为输出
error : Undefined variable referenced
00000f OUT PORTC,TEMP
error : Undefined variable referenced
000010 OUT DDRd,TEMP ;PORTD设定为输出
error : Undefined variable referenced
000011 OUT PORTd,SCNDP ;6位七段LED扫描显示码输出到PORTD
error : Undefined variable referenced
000012 901d LD R1,X+ ;要显示于七段LED的间接寄存器X中的内容送入R1并令X加1
000013 OUT PORTb,R1 ;显示内容输出到PORTB以驱动LED显示
error : Undefined variable referenced
000014 RCALL DELAY ;调用延时以显示此位数一段时间
error : Undefined variable referenced
000015 MOV TEMP,CNT ;LED位数为6而按键码行数为4故需作CNT值检测
error : Illegal argument type or count
000016 SUBI TEMP,$03 ;CNT=TEMP与3相减比较
error : Illegal argument type or count
000017 f0a0 BRCS NOSK ;位数扫描CNT超过3则C为1跳到NOSK不作按键处理
000018 LDI TEMP1,$04 ;一共要检查4个按键
error : Illegal argument type or count
000019 LDI TEMP,0B00001111 ;设定PC0-PC3为输出PC4-PC7为输入
error : Illegal argument type or count
00001a OUT DDRc,TEMP
error : Undefined variable referenced
00001b OUT PORTc,KSNI ;KSNI输出到PORTC并令PC7-PC4为上拉电阻输入态
error : Undefined variable referenced
00001c RCALL DELYT ;调用延时以稳定读取键盘I/O输入端
error : Undefined variable referenced
00001d IN TEMP,PINc ;读取C口检测PC7-PC4看是否有按键低电位输入
error : Illegal argument type or count
00001e ANDI TEMP,0B11110000 ;取TEMP的高4位
error : Illegal argument type or count
00001f SWAP TEMP ;键码顺序为PC4-PC7故将TEMP的高低4位互换成D0-D3
error : Illegal argument type or count
000020 9408 KROW: SEC ;令C标志为1以便将键盘码D0-D3移到C标志位检测
000021 ROR TEMP ;TEMP的内容右移1位将第一个键码D0=PC4移到C标志位检测
error : Illegal argument type or count
000022 f020 BRCS NOKEY ;若有键按下则测到PC4=D0=0,若C=1无按键则转到NOKEY
000023 94e8 CLT ;若PC4=D0=CF=0表示有按键令T=0表示有按键
000024 MOV KEYN,SCNN ;把按键扫描码SCNN送键码KEYN中保存
error : Illegal argument type or count
000025 SBIS PINd,$07
error : Undefined variable referenced
000026 ADIW KEYN,$10 ;判定SHIFT键是否按下,按下则键值加10
error : Illegal argument type or count
000027 NOKEY: INC SCNN ;按键扫描码SCNN加1
error : Illegal argument type or count
000028 DEC TEMP1 ;扫描读取键数TEMP1减1
error : Illegal argument type or count
000029 f7b1 BRNE KROW ;每行有4个按键如TEMP1不为0则跳到KROW再检测PC5-PC7
00002a 9408 SEC ;此行4个键码检测完后令C为1以方便键盘扫描码KSNI内容的移位
00002b ROR KSNI ;键盘扫描码KSNI=CF=1>11110111移位以进行下一行按键扫描
error : Illegal argument type or count
00002c 9408 NOSK: SEC ;令进位标志CF=1
00002d ROR SCNDP ;将扫描显示码SCNDP左移作下一位扫描
error : Illegal argument type or count
00002e DEC CNT ;共需作6位数扫描显示故CNT减1
error : Illegal argument type or count
00002f f6e1 BRNE COL1 ;CNT减1不为0则跳回COL1再作扫描显示及读取键盘输入
000030 LDI TEMP,$FF ;若已完成全部扫描显示和读取按键则令TEMP=0ff
error : Illegal argument type or count
000031 OUT DDRC,TEMP ;TEMP输出到DDRC设定PORTC为输出驱动LED
error : Undefined variable referenced
000032 OUT PORTC,TEMP
error : Undefined variable referenced
000033 POP TEMP
error : Illegal argument type or count
000034 POP TEMP1
error : Illegal argument type or count
000035 POP TEMP2
error : Illegal argument type or count
000036 POP TEMP3
error : Illegal argument type or count
000037 POP XL
error : Illegal argument type or count
000038 pop xh
error : Illegal argument type or count
000039 9508 RET
Assembly complete with 47 errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -