历史上的今天
今天是:2025年05月08日(星期四)
2018年05月08日 | 51单片机对两位 BCD拨盘 的读出程序
2018-05-08 来源:eefocus
问题:做了一个小设计,用的是AT89C2051,其中P1口接两位BCD指拨开关,P3.2接了一个开关,P3.3接了一个继电器。
两位BCD指拨开关的具体接法是公共端接P1.1和P1.2口,8421分别接在P1.3~P1.6口。
我想通过开关控制继电器开合。具体要求是:按开关的次数由BCD开关的十位来决定,即BCD上显示的是数字3,则按3次P3.2所接的开关,继电器才开始动作,显示5,则按5次继电器才动作,以此类推;而继电器开合时间由BCD开关的个位控制,如果BCD上显示的是数字3,则继电器开或合3分钟,是5则开或合5分钟。
不知道如何读入的P1口值并分开成两部分,请哪位前辈高手帮忙写个程序,让我学习学习。在此万分感谢。
悬赏分:50 - 解决时间:2009-9-12 14:27
;============================
最佳答案:
利用两个BCD指拨开关,设定了按键次数和延时时间(分钟数);按键输入、继电器输出。
很简单,楼主写的非常清楚。
BCD指拨开关(又称为拨盘、拨码开关),其输出是按照8421形式,但是它有个公共端,输入高电平的时候,输出的8421码是高电平有效。
;----------------------------
;读入BCD(8421)拨码开关:
SETB P1.1 ;屏蔽一组
CLR P1.0 ;P1.0所连接的拨盘有效
MOV A, P1 ;读入,低有效
CPL A ;有效值变高
RR A
RR A
ANL A, #0FH ;留下低四位
MOV R7, A ;存好
SETB P1.0 ;屏蔽另一组
CLR P1.1 ;P1.1所连接的拨盘有效
MOV A, P1 ;读入,低有效
CPL A ;有效值变高
RR A
RR A
ANL A, #0FH ;留下低四位
MOV R6, A ;存好
;这样,就将两组BCD码,存到了R6和R7。
下一篇:汇编语言的16位除法子程序
史海拾趣
|
这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不是教你各种 8051 嵌入式系统的解决方法。… 查看全部问答> |
|
一、C语言编写详解 1.工程目录最好放在: CCStudio_v3.3\\MyProjects路径下 2.CSS下和DSP6000编程紧密相关的目录结构: a.CCStudio_v3.3\\C6000\\csl\\include ---DSP6000常用头文件 b.CCStudio_v3.3\\C6000\\csl\\li ...… 查看全部问答> |
|
我用的是msp4302132,只有一个XT,接了16M晶振,我把XT的8分频用作ACLK,把ACLK用于TA产生40K的PWM波形,同时把XT不分频用作MCLK,我把ACLK,MCLK,40K PWM的三个引脚都测量了,40K波形正确,ACLK端口无输出,MCLK端口输出1.1-1.2M的波 ...… 查看全部问答> |
|
使用XP下的DDK做的一个HID识别的程序, XP下一切正常,在WIN7下只能够将鼠标识别出来,请问有什么方法可以解决这个问题?有没有支持WIN7的DDK之类的SDK包?… 查看全部问答> |
|
我在写EEPROM 后 ADC通道会被自动发变(ADC 是采用连续,扫描模式).请问一下可能是什么原因,我都找了两天了 (eeprom 读写都正常) 另外还有一个问题: 我调用内部的asin() 时如果不关中断结果是错的!! 麻烦回复!!!… 查看全部问答> |
|
制作初衷:送女友生日礼物制作材料:AT89C52,74HC138,MBI5020,电容,电阻,16*16 LED,按键实现效果:显示单个汉字,汉字逐列左移,根据点阵设计可实现简单动画效果;可操作按键切换显示模式供电方式:3节5号电池或手机电池… 查看全部问答> |
|
运行测试及典型误差源——《使用2790型数字源表开关系统测试双安全气囊充气机模块》 运行测试 按照“基础编程指南”一节中出现的顺序进行测试是一种可行的双充气泵安全气囊模块测试方案。如前所述,分流条测试往往进行多次,以确保分流条功能正常而且连接正确。示例代码试演示本指南中讨论的所有测量功能,但是这些功能的使用取决 ...… 查看全部问答> |




