历史上的今天
今天是:2024年12月14日(星期六)
2019年12月14日 | 51单片机汇编学习例程(1)——KEY篇
2019-12-14 来源:51hei
1.ASM1_KEY:按键控制LED亮灭,3种情况
/**
******************************************************************************
* @file asm.asm
* @author Alex——小白
* @version V1.0
* @date 2019.9.1
* @brief 3种方法实现KEY to LED
******************************************************************************
* @attention All Rights Reserved
**/
ORG 0030H ;程序执行的起始地址
LJMP Main ;跳转到main函数
ORG 0100H ;程序跳转到0100H开始执行
;方法1:
Main: ;最简单的按键赋值(8个按键)
MOV P1,P0 ;将P0状态赋给P1
SJMP Main ;跳转到main,死循环
;方法2:
; Main: ;P0.0按键控制P1.0的LED(1个按键)
; JB P0.0,Over ;判断按键是否检测到,若无跳到Main
; LCALL Delay ;若有,延时消抖
; JB P0.0,Over ;再次判断按键是否检测到
; JNB P0.0,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
; CPL P1.0 ;若有按键,则LED状态翻转(CPL表示去反)
; Over:
; SJMP Main ;跳转到main,死循环
;方法3:
; Main: ;P0.0-1按键控制P1.0-1的LED(2个按键)
; JB P0.0,Next ;判断P0.0按键是否检测到,若无跳到Next
; LCALL Delay ;若有,延时消抖
; JB P0.0,Next ;再次判断按键是否检测到
; JNB P0.0,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
; CPL P1.0 ;若有按键,则LED状态翻转
; Next:
; JB P0.1,Over ;判断P0.1按键是否检测到,若无跳到Over
; LCALL Delay ;若有,延时消抖
; JB P0.1,Over ;再次判断按键是否检测到
; JNB P0.1,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
; CPL P1.1 ;若有按键,则LED状态翻转
; Over:
; SJMP Main ;跳转到main,死循环
Delay: ;t=t1*20=10ms,修改R6的值即可更改时间(不精准)
MOV R6, #014H ;014H=20
D1:
MOV R7, #0FAH ;t1=250*2=500
D2:
DJNZ R7, D2 ;R7=250自减,直到为0跳出循环,双周期
DJNZ R6, D1 ;R6=020自减,直到为0跳出循环,双周期
RET
END
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 听说NEC公司送了芯片,可是为什么有的学校拿到了,有的学校没拿到呢? … 查看全部问答> |
|
HELLO.C(5): 警告 C206: \'uart_Init\': missing function-prototype HELLO.C(10): 警告 C206: \'DELAY\': missing function-prototype HELLO.C(10): 错误 C267: \'DELAY\': requires ANSI-style prototype 这是用Keil编译程序时出现的错误,应 ...… 查看全部问答> |
|
如题所述。我在安装isp运行或者 用绿色版运行之后都提示缺少一个文件 但是我的文件夹下有这个文件 而且我去网上下了新的解压替换了之后还是这样 。isp下了好几个了都是这样 。请高手指点一下。 注:我没有连接单片机 只是单 ...… 查看全部问答> |
|
我在Vxworks下实现以太网通讯,采用UDP协议,在调试状态下,程序运行正常,用ping指令ping目标机和测试程序测试均正常,但将程序作成映像下载到DOC中运行时,却发现无法ping通目标机,不知怎么回事,请高手解释一下,另外,我在程序中开了三个任务 ...… 查看全部问答> |
|
请教WinCE6.0开发中关于Emulator的问题(如何自制SDK,Emulator) 我刚刚接触WinCE,我需要做的事情是在一般WinCE设备上开发应用程序,我打算自己在PB6.0上导出一个一般的WinCE6.0的SDK并安装,然后在VS2005上写代码,通过WinCE6.0仿真器看到代码的效果。 现在我按照网上的文章“WinCE6.0安装顺序”依次安装了下列 ...… 查看全部问答> |
|
我刚开始接触蓝牙开发,现在在学习Bluelab 3.6.2提供的Demo code,有做过相关蓝牙开发的吗,提供一下学习方法,适合入门,谢谢!… 查看全部问答> |
|
各位高手,帮帮小弟吧!怎么才能实现占空比可变的PWM信号五分频。单片机输出的最低频率是3.9KHz,现在需要降低到500Hz左右,怎么样才能实现呢?不胜感激…… [ 本帖最后由 daijianguo28 于 2011-7-10 12:23 编辑 ]… 查看全部问答> |




