程序要求:开始时LED显示0、K1具有增数功能、K2具有减数功能。
若LED显示为0,按下K1,则显示为1、再按下K1,显示为2.....,若显示为9,再按下则显示为0;
若LED显示为0,按下K2,则显示为9、再按下K2,显示为8.....,直至显示为1。再一次循环。
显示部分采用硬件译码器,电路给出如下。
悬赏分:50 | 解决时间:2011-6-14 09:11
;===========================================
最佳答案:
程序仿真通过,仿真电路如下:
程序:
ORG 0000H
LJMP START
ORG 0040H ;从40H地址开始.
START:
MOV A, #0 ;开始显示的初值.
SETB P2.0 ;开始置0,
SETB P2.1 ;开始置0,
;------------------------
LOOP:
MOV P0, A ;显示寄存器A中的内容.
JNB P2.0, INCR ;K1开,跳转到INCR
JNB P2.1, DECR ;K2开,跳转到DECR
JMP LOOP
;------------------------
INCR:
JNB P2.0,INCR ;按键按下后是否松开.
ADD A, #1 ;A加1
DA A ;A内容进行BCD调整.
JMP LOOP
;------------------------
DECR:
JNB P2.1, DECR ;按键按下后是否松开.
ADD A, #99H ;A减1
DA A ;A内容进行BCD调整.
JMP LOOP
;------------------------
END
关键字:51单片机 汇编语言
引用地址:
用51单片机汇编语言,编写“键控加减一”的程序
推荐阅读最新更新时间:2024-03-16 16:02
学习51单片机有感
这里有专门的一个 定义特殊功能寄存器的位变量。 bit和sbit都是C51扩展的变量类型。 典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。 利用异或操作取位,进行,,,,,, 在设置定时器的时候发现下列的代码 THO = (65536 - 5000)/256;//赋值高8位 TLO = (65536 - 5000)%256;//赋值低8位 你说这与直接将65536 - 5000 赋予寄存器 有什么区别,这样有什么好处?怎么有种脱了裤子放屁的感觉,----后来了解到原来是两个8位寄存器合成的,怪不得要分别赋值。 //产生 3:1的脉冲 灯亮1s 熄灭
[单片机]
51单片机学习———3--蜂鸣器
原理 蜂鸣器介绍 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过放大电路放大驱动电流就能使蜂鸣器发出声音,非常简单。 蜂鸣器控制 改变单片机引脚输出
[单片机]
51单片机片外扩展RAM
一.概述 普通51单片机可以片外扩展ROM和RAM各64K字节的空间,在实际应用中很少扩展外部ROM,一般都是扩展RAM,因为普通51单片机的内部RAM实在太少,只有128-256字节,处理数据量较大时往往不够用。而片外扩展RAM需要占用P0口、P2口和P3.6、P3.7,消耗了18个IO口,导致IO口又不够用。为了解决以上矛盾,大容量的51单片机(增强型51单片机)应运而生,这种单片机一般内置1K-16K的RAM和16K-64K的ROM,价格也相对昂贵。在某些情况下,用普通51单片机通过片外扩展RAM要比直接使用增强型51单片机更能节约成本。所以,学习51单片机片外扩展RAM是很有必要的。 二.电路设计 在WSF-51DB
[单片机]
51单片机在设计中的的时钟及复位
单片机 的时钟信号用来提供单片机片内各种微操作的时间基准,复位操作则使单片机的片内 电路 初始化,使单片机从一种确定的初态开始运行。 时钟电路: 8031单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。 在引脚XTAL1和XTAL2外接晶体 振荡器 (简称 晶振 )或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益 反相 放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。 图中, 电容 器Col,C02起稳定振荡 频率 、快速起振的作用,其 电容 值一般在5-30pF。晶振频率的典型值为12MH2,采用6M Hz 的情况也比较多。内部振荡方式所得的时钟情号
[单片机]
51单片机~DS18B20温度传感器
(一)简介说明: (二)接线: 1. 内部结构: 正温度前五位是0. 负温度前五位是1. 由LS,MS组成的四位十六进制数,和16位二进制数。(先MS后LS) 结合上下图直到温度计算:1乘2 ^ 6 + 0乘2 ^ 5 +1乘2^ 4 +0乘2^ 3 +……2^0 ==85 (二)使用流程,按照时序图编写程序(判断应用): 粗黑线是总线控制的电平 灰线表示DS18B20控制的; 电阻上拉是由于上图接线有一个上拉电阻 读时重复七次直到读完为止 测试温度代码: temp.h #ifndef __TEMP_H_ #define __TEMP_H_ #include reg52.h
[单片机]
有关51单片机读端口、读引脚的问题
80C51单片机有P0-P3四个P口,以P0为例说明: 要搞清这个问题,就要明白p0口的内部结构。P0口是由锁存器经两个驱动场效应管和外部引脚相连的。 读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。 两者不同。一般来说,读取P0的数据,都是读引脚,目的是获取与P0相连的外部电路的状态。而读端口是在执行下述语句时由CPU自行完成的: inc P0;给p0加1 执行这个语句时 ,采用“读-改-写”的过程,先读取p0的端口数据,再加1,然后送到p0锁存器里。注意这个端口数据跟p0的引脚状态不一样,比如你事先给p0写进69H,p0里数据就是69H,而引脚上的状态因为你没有执行MOV A
[单片机]
51单片机定时器中断基础
一、中断概念 中断是为使单片机具有对外部或者内部随机发生的事件实时处理而设置的。 把自己想象成单片机的CPU,你正在洗衣服,但是突然快递小哥给你打电话让你去拿快递,于是你停下洗衣服去拿快递了。快递小哥的电话就是中断信号,告诉你有其他的事情需要先去做,然后你去拿快递就相当于中断之后要去处理的事情。 51单片机有五个中断源 INT0——外部中断0 INT1——外部中断1 T0——定时器/计数器0中断 T1——定时器/计数器1中断 TI/RI——串行口中断 二、使用中断的过程(下面以定时器0、工作方式1为例) 定时器0选择工作方式1 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 G
[单片机]