两个8421拨码开关,设定了按键次数和延时时间(分钟数);
按键输入、继电器输出。
很简单,楼主写的非常清楚。
楼主可以自己编写一些,大家再来帮忙。
----------------------------
读入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。
将P1口的个位和十位分开,也就是如何将读入的P1口值分开成两部分
和矩阵键盘原理是一样的 反转法就可以~
ANL ORL这2指令
这里的第六行和第七行首先要知道TF0的意思:
TF0是定时/计数器
控制寄存器
中的一个标志位
TF0=0:表示定时器0没有溢出,可以正常计时;
当定时器0计时时间到,产生溢出,就会使得TF0=1。
因此第六行用while(!TF0)即当TF0=0时执行循环,如果计时时间到,TF0就会置1,这时跳出循环,执行下面的语句,清除计时结束标志,以便进行下一次延时计数。
atmel/intel的80c51系列的不能现场编程,需拆下芯片使用专门的脱机编程器。s系列的可以isp在线编程。stc的可串口在线编程。观察芯片的工作状态,只能通过软件设置运行指示或是按照一定的通讯协议对外发送数据,来解析机器工作状态。