硬件电路:
P1.0 ~ P1.5 外接 6 个 LED,分别称为 D1 ~ D6,低电平发光。
P0.0 ~ P0.3 外接 4 个 按键,分别称为 K1 ~ K4。
P3.2 ~ P3.3 外接 2 个 按键,分别称为 K5 ~ K6。
用汇编语言编程进行控制,要求:
当按下 K1 时,D1 发光;
按下 K2 时,D2、D3 发光;
按下 K3 时,D4、D5、D6 发光;
按下 K4 时,D1、D3、D6 发光;
按下 K5 时,全部熄灭;
按下 K6 时,全亮。
用查询方式完成上述动作。
做而论道编写的程序如下:
2013-04-19 23:06
ORG 0000H
START:
JNB P0.0, K1
JNB P0.1, K2
JNB P0.2, K3
JNB P0.3, K4
JNB P3.2, K5
JNB P3.3, K6
SJMP START
;-----------------------
K1:
CALL DL10MS
JB P0.0, START
JNB P0.0, $
CLR P1.0 ;按下K1键时,D1二极管发光;
SJMP START
;-----------------------
K2:
CALL DL10MS
JB P0.1, START
JNB P0.1, $
CLR P1.1 ;按下K2键时,D2、D3发光;
CLR P1.2
SJMP START
;-----------------------
K3:
CALL DL10MS
JB P0.2, START
JNB P0.2, $
CLR P1.3 ;按下K3键时,D4、D5、D6发光;
CLR P1.4
CLR P1.5
SJMP START
;-----------------------
K4:
CALL DL10MS
JB P0.3, START
JNB P0.3, $
CLR P1.0 ;按下K4键时,D1、D3、D6发光。
CLR P1.4
CLR P1.5
SJMP START
;-----------------------
K5:
CALL DL10MS
JB P3.2, START
JNB P3.2, $
MOV P1, #255 ;按下K5是全部熄灭;
SJMP START
;-----------------------
K6:
CALL DL10MS
JB P3.3, START
JNB P3.3, $
MOV P1, #0 ;按下K6是全亮;
SJMP START
;-----------------------
DL10MS:
MOV R6, #10
DJNZ R7, $
DJNZ R7, $
DJNZ R6, $ - 4
RET
;-----------------------
END
关键字:51单片机 汇编语言 按键操作控制
引用地址:
51单片机,汇编语言,按键操作控制
推荐阅读最新更新时间:2024-03-16 16:02
C51单片机对液晶片的驱动
Keil C51编写的192*64液晶片驱动程序,感谢很多网友提供了参考源程序 本程序是在网友们提供的程序基础上改写而成,有很多地方得到高手们的耐 心指导,在此深表谢意。这是一个完整的C51源程序,我觉得对一位初学C51 的人来说,提供一个完整的简单程序比较容易上手。 --------------------------------------------------------------------------------------------------*/ /*写汉字液晶子程 液晶屏分为4行*12列汉字,全部使用模拟接口方式。 /* TGLCMLIMIT64A接口程序(模拟方式) 液晶模块供应商: Email
[单片机]
51单片机-函数传参调用
本讲在上一讲的代码基础上讲解新的编程知识:函数参数传递调用! 1.推陈出新 上一讲的函数封装“delay();”是一个固定的功能,只能做延时1秒的作用,大多数情况下我们希望一个函数用相同的函数名通过修改一个值可以实现不一样的功能,所以就产生了函数带参调用的编程手法。 我们根据前面章节的基础实现通过修改函数参数值来实现LED不同延时的间隔闪烁,因为参数的传入在函数内容中是可以使用这个参数变量的,所以我们用“while(x--)”来让x决定延时的毫秒数。 延时部分如下,函数名改为“delay_ms”代表要延时多少毫秒 void delay_ms(unsigned int x) { unsigned int j;
[单片机]
51单片机定时器计数器原理以及应用(方波、pwm、脉冲计数、高电平脉宽测量)
1.TMOD定时器/计数器工作方式 寄存器 GATE=1时,定时器由INT和TR共同控制,用于测量脉宽; 2.TCON定时器/计数器控制寄存器 3. 2.应用示例: 2.1T0/T1控制外部引脚输出方波 1.设计思路:设置定时计数器工作在定时工作方式,在中断服务子程序中将需要输出方波信号的I/O引脚上的电平翻转即可。 2.仿真电路: 3.代码 2.2PWM波形输出 1.设计思路:51 单片机 可以使用一个定时计数器来控制产生波形的频率,用另外一个定时计数器来控制波形的占空波。 2.仿真原理图同1. 3.具体代码: 3.脉冲计数 1.设计思路:使用T0/T1进行计数时,当外部引脚上检查到一个脉冲
[单片机]
51单片机双CPU系统通信方法
本文介绍一种新颖的方法来实现51系列单片机双CPU系统。该方法灵活地运用了51单片机的ID工作方式,使没有HOLD功能的51单片机能够直接通过片外RAM进行数据通信。不但硬件和软件的实现都比较简单,数据传输速度快,而且不涉及高成本特殊器件。对一般51单片机系统的设计有一定的参考意义。 1 实现双处理器的一般方法 ① 使用双口RAM。这种方法方便地实现了CPU之间的通信,在选择CPU接口时具有较大的灵活性;但这种方法会增加电路设计的难度和成本。 ② 利用I/O口进行并行通信。这种方法既要用I/O口传送数据,又要用I/O口来进行传送的控制,因此占用较多的I/O口;而且控制过程涉及进行通信的两个CPU,软件设计比较复杂。 ③ 利
[单片机]
51汇编语言指令集
符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR (80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11
[单片机]
基于51单片机的温室测试系统设计
设施农业是世界现代农业发展的主要方向之一,我国农业正处于从传统也向高产、优质、高效为目的的现代化农业转化新阶段,设施农业是我国今后比较长的时间内农业发展的个主要方向。 环境控制对果树生产的重要作用已经为国内外大量的科学实验和生产的实践所证实。只有在适宜的生长环境下果疏才能充分发挥其高产潜力。多年的有关果树生长环境的研究,不仪知道了农业生产,也为温室环境测控的研究提供了理论和依据。但如何利用传感器技术,白动检测技术,通讯技术,计算机技术的发展和温室栽培的推广研制出对温室温度,湿度,二氧化碳浓度的智能测控系统,为果树提供最佳的生长环境,一直是农业研究者面临的重要课题。 虽然国外采用了全智能控制,但是他们的成本太高,
[单片机]
基于51单片机的液位检测系统
随着现代测量技术的发展,对测量系统提出了越来越高的要求。在自动蒸馏测控系统中,准确及时地检测出蒸馏过程中从冷凝管馏出的第一滴液滴是获取初馏点的前提;实时、准确地测量出量筒中回收液体体积的变化是控制蒸馏过程中不同时段不同蒸馏速度的依据。而目前担负着对冷凝管馏出的液滴进行检测、回收、计量、测速等任务的完成有诸多不尽人意的地方,需要更加完善、合理的液滴、液位检测跟踪控制系统。 从液位测量的方法看,按检测器与液体接触与否分为两大类:一是接触式测量,二是非接触式测量。当需要通过测量液位变化确定体积变化时,一般采用非接触式测量方法。但在大多数非接触式测量中,液位传感器测试范围较大,绝对分辨率均大于0.5ml,因而在体积变化范围为0-
[单片机]
详解80C51单片机的复位电路和时钟电路
复位电路 在80C51中,最常见的复位电路就是下图的上电复位电路。 它能有效地实现上电复位和手动复位。RST引脚高电平有效。 其有效时间应持续24个振荡周期以上才能完成复位操作。若使用6MHz晶振,则需持续4us以上才能完成复位操作。 在通电瞬间,由于RC电路的充电过程,在RST端出现一定宽度的正脉冲,只要正脉冲保持10mS以上,就能使单片机自动复位。 CPU在第二个及其周期内执行内部复位操作,以后每个机器周期重复一次,直至RST端电平变低。 在单片机复位器件,ALE和~PSEN信号都不产生。复位操作将对部分专用寄存器产生影响,复位后,这些内部寄存器的状态发生变化,如下表。 时钟电路 在80C51单片机内有一个高增益的反
[单片机]