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

📄 slavr733.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 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 + -