一个单片机逻辑电路题目,要求编一程序实现下面逻辑电路的逻缉功能。
逻辑图:
悬赏分:20 | 解决时间:2011-1-2 22:53
;------------------------------------------------------------
最佳答案:
先把逻辑图写成如下的表达式:(用“P1.6\” 代表“P1.6 的非”,其它的也雷同)
P3.0 = ((P1.0 * P1.1)\ * (P1.4 + P1.5)\) + P1.6\)\
再反复应用摩根定理化简:
P3.0 = ((P1.0 * P1.1)\ * (P1.4 + P1.5)\)\ * P1.6
P3.0 = ((P1.0 * P1.1) + (P1.4 + P1.5)) * P1.6
最后写成:
P3.0 = (P1.0 * P1.1 + P1.4 + P1.5) * P1.6
这就简单多了,四个取反的步骤,都化没了。
等效的逻辑图如下:
用汇编语言和C语言编写的局部程序如下:
====================================
;汇编语言:
MOV C, P1.0
ANL C, P1.1
ORL C, P1.4
ORL C, P1.5
ANL C, P1.6
MOV P3.0, C
SJMP $
;===================================
//C语言:
sbit a = P1^0; //将引脚确定为变量
sbit b = P1^1;
sbit c = P1^4;
sbit d = P1^5;
sbit e = P1^6;
sbit f = P3^0;
f = (a & b | c | d) & e; //一行语句即可
//这个题目,在教材里面,一般是要求使用51单片机的位操作指令来编程的,所以,答题时应该用汇编语言。
//但是,看到多数网友,对汇编比较迟钝,所以,也就把C语言写在这里了。
//==================================
有些网友直接按照逻辑图来编写程序,没有先行逻辑化简,所以编写出来的程序难免笨重。
这里给出的程序,比楼上的几种方法,都简单的多,执行速度也快的多。
回答者: 做而论道
提问者对于答案的评价:非常感谢!
====================================
下面是另外一个关于逻辑化简的题目。
利用布尔代数的公理和定理求 F = (A ? B) ⊙ AB 的最简逻辑函数表达式。
悬赏分:0 | 解决时间:2011-1-2 19:40
-------------------------------------
最佳答案:
以下用 A\ 代表“A的非”,其它的也雷同。
题目中的?和⊙,分别代表异或和同或,下面把它们用与或非逻辑运算展开并化简。
F = (A ? B) ⊙ AB
= (A\B + AB\) * AB + (A\B + AB\)\ * (AB)\
= (A\B * AB + AB\ * AB) + (A\B + AB\ ) + (AB)
= ( 0 + 0 ) + (A\B + AB\ ) + (AB)
= ( 0 + 0 ) + A\B + AB\ + AB
= ( 0 + 0 ) + A\B + AB + AB\ + AB
= ( 0 + 0 ) + A\B + AB + AB\ + AB
= ( 0 + 0 ) + (A\ + A)B + (B\ + B)A
= B + A
上一篇:LCD1602 的4线接法
下一篇:利用74HC595在串行口扩充8位的并行输出接口
推荐阅读最新更新时间:2024-03-16 16:02