先写一个按键扫描程序,不停的扫描,将扫描的值返回给一个数组,例:
uchar i,temp[n]; //n是密码的位数
uchar keyscan()
{
//扫描程序;
temp[i+]=p0 ; //p0是扫描回来的按键值,每当按键按下一次,就给相应 的 temp[i];
if(i=(n-1))
{
i=0;
if(check()) //对temp[n]的值校验,如果密码正确;
response(); //执行相应函数;
}
}
在
mov ax,4c00h
int 21h
的前面输入
@@:
mov ah,7
int 21h
cmp al,'$'
jne @b
你的要求是当调用int 21h中断的0aH号功能的时候,如果键入'$',则结束程序。
要知道当你调用中断的时候,进程就不是由你所写的程序控制了,它相当于调用系统的子程序。所以要得到你所说的效果,就需要在程序开始的时候对int 21h中断进行修改,
程序结束前再恢复。这样一来的话,程序就不是调用int 21h中断的0aH号功能了,而是调用自己编写的中断程序了。你确定要这么做吗?
定时器是必须采用,不然无法产生音频信号。
T0H EQU 30H
T0L EQU 31H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
SETB ET0
SETB EA
LOOP:
MOV DPTR,#FREQ
MOV A,P2 ;控制高中低音区
MOV R1,#0
ANL A,#03H
JB ACC0,LOOP01
MOV R1,#14
SJMP LOOP0
LOOP01:
JB ACC1,LOOP0
MOV R1,#28
LOOP0:
JB P00,LOOP1 ;控制音频1234567
MOV A,R1
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP1:
JB P01,LOOP2
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#2
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP2:
JB P02,LOOP3
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#4
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP3:
JB P03,LOOP4
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#6
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP4:
JB P04,LOOP5
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#8
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP5:
JB P05,LOOP6
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#10
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP6:
JB P06,LOOP7
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0H,A
INC DPTR
MOV A,R1
ADD A,#12
MOVC A,@A+DPTR
MOV T0L,A
LJMP LOOP
LOOP7:
CLR TR0
LJMP LOOP
;-----------------------------
T0ISR:
CLR TR0
MOV TH0,T0H
MOV TL0,T0L
SETB TR0
CPL P30
RETI
;-----------------------------
FREQ:
DB 0F2H,03DH ;低音1
DB 0F3H,0BDH ;低音2
DB 0F5H,014H ;低音3
DB 0F5H,0B1H ;低音4
DB 0F6H,0D0H ;低音5
DB 0F7H,0D1H ;低音6
DB 0F8H,0B5H ;低音7
DB 0F9H,01EH ;中音1
DB 0F9H,0DEH ;中音2
DB 0FAH,08AH ;中音3
DB 0FAH,0D8H ;中音4
DB 0FBH,068H ;中音5
DB 0FBH,0E8H ;中音6
DB 0FCH,05AH ;中音7
DB 0FCH,08FH ;高音1
DB 0FCH,0EFH ;高音2
DB 0FDH,045H ;高音3
DB 0FDH,06CH ;高音4
DB 0FDH,0B4H ;高音5
DB 0FDH,0F4H ;高音6
DB 0FEH,029H ;高音7
;-----------------------------
END
一、常用快捷键
F1 显示当前程序或者Windows的帮助内容。
F2 当你选中一个文件的话,这意味着“重命名”
F3 当你在桌面上的时候是打开“查找:所有文件”
对话框
F10或ALT激活当前程序的菜单栏
windows键或CTRL+ESC
打开开始菜单
CTRL+ALT+DELETE
在win9x中打开关闭程序对话框
DELETE 删除被选择的选择项目,如果是文件,将被放入回收站
SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是放入回收站
CTRL+Z
撤消
CTRL+C
复制
CTRL+V
粘贴
CTRL+ESC
显示“开始”菜单
CTRL+N 新建一个新的文件
CTRL+O 打开“打开文件”对话框
CTRL+P 打开“打印”对话框
CTRL+S 保存当前 *** 作的文件
CTRL+X 剪切被选择的项目到剪贴板
CTRL+INSERT
或
CTRL+C复制被选择的项目到剪贴板
SHIFT+INSERT
或
CTRL+V 粘贴剪贴板中的内容到当前位置
ALT+菜单上带下划线的字母执行菜单上相应的命令
ALT+F4
关闭当前窗口或退出程序
ALT+空格键
显示当前窗口的系统菜单
ALT+TAB
切换到另一个窗口
ALT+BACKSPACE
或
CTRL+Z
撤销上一步的 *** 作
ALT+SHIFT+BACKSPACE
重做上一步被撤销的 *** 作
Windows键+M
最小化所有被打开的窗口。
Windows键+CTRL+M重新将恢复上一项 *** 作前窗口的大小和位置
Windows键+E
打开资源管理器
Windows键+F
打开“查找:所有文件”对话框
Windows键+R
打开“运行”对话框
Windows键+BREAK
打开“系统属性”对话框
Windows键+CTRL+F打开“查找:计算机”对话框
SHIFT+F10或鼠标右击
打开当前活动项目的快捷菜单
SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开Word的时候按下不放,可以跳过自启动的宏
ALT+F4 关闭当前应用程序
ALT+SPACEBAR打开程序最左上角的菜单
ALT+TAB
切换当前程序
ALT+ESC
切换当前程序
ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换
SCREEN将当前屏幕以图象方式拷贝到剪贴板
ALT+PRINT
SCREEN将当前活动程序窗口以图象方式拷贝到剪贴板
CTRL+F4
关闭当前应用程序中的当前文本(如word中)
CTRL+F6
切换到当前应用程序中的下一个文本(加shift
可以跳到前一个窗口)
二、Windows快捷键
目的快捷键
WINDOWS+TAB
在任务栏上的按钮间循环
WINDOWS+F
显示“查找:所有文件”
CTRL+WINDOWS+F
显示“查找:计算机”
WINDOWS+F1
显示“帮助”
WINDOWS+R
显示“运行”命令
WINDOWS+
R
WINDOWS
显示“开始”WINDOWS+BREAK 显示“系统属性”对话框
WINDOWS+E
显示“Windows资源管理器”
WINDOWS+D
最小化或还原所有窗口
SHIFT+WINDOWS+M
撤消最小化所有窗口
三、使用“桌面”、“我的电脑”和“Windows资源管理器”快捷键
选择项目时,可以使用以下快捷键。
按住
SHIFT插入CD-ROM
插入光盘时不用“自动播放”
创建快捷方式按住CTRL+SHIFT拖动文件
复制文件按住
CTRL拖动文件
SHIFT+DELETE
立即删除某项目而不将其放入“回收站”
APPLICATION键
显示项目的快捷菜单
F5
显示“查找:所有文件”
F2
重命名项目
CTRL+A
选择所有项目
ALT+ENTER或ALT+双击
查看项目的属性
四、Microsoft放大程序的快捷键
Windows徽标+PRINT
SCREEN
将屏幕复制到剪贴板(包括鼠标光标)
Windows徽标+SCROLL
LOCK
将屏幕复制到剪贴板(不包括鼠标光标)
Windows徽标+PAGE
UP
切换反色
Windows徽标+PAGE
DOWN
切换跟随鼠标光标
Windows徽标+向上箭头
增加放大率
Windows徽标+向下箭头
减小放大率
五、辅助选项快捷键
右SHIFT八秒
切换筛选键开关
左ALT+左SHIFT+PRINT
SCREEN
切换高对比度开关
左ALT+左SHIFT+NUM
LOCK
切换鼠标键开关
SHIFT键五次
切换粘滞键开关
NUM
LOCK五秒
切换切换键开关
需要组件,标签1一个!复制代码:版本 2支持库 shellEx支持库 eAPI程序集 窗口程序集1程序集变量 F1按键ABCD, 整数型子程序 __启动窗口_创建完毕F1按键ABCD = 注册热键 (_启动窗口取窗口句柄 (), 标签1取窗口句柄 (), 0, #F1键)子程序 _标签1_反馈事件, 整数型参数 参数一, 整数型参数 参数二, 整数型如果真 (参数一 = F1按键ABCD) 模拟按键 (#A键, #B键, #C键) 模拟按键 (#D键,#F键 , )如果真结束记得采纳,我是第一个回答的哦
不是的,前面的判断加上for(j=0;j<4;j++) { in[j]=0; }的处理是,如果用户对密码的错误输入次数超过3次,就对密码数组(4个字符的串)置零,也就是恢复初始值的4个零状态。
呵呵,这个Keil C程序做得很简洁。
以上就是关于单片机怎么让程序等待按键输入全部的内容,包括:单片机怎么让程序等待按键输入、如何让程序在特定按键输入时退出返回DOS、51单片机程序,我想要个按键输入的,可以让蜂鸣器输出音阶1234567,怎么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)