使用1:设有51使用体系衔接如附图。试阐明该体系别离履行如下程序段A和程序段B时,与P1.0端口衔接的LED怎么显现改变?对应程序段A和程序段B的显现改变有何差异?
程序段A:
LP: CPL P1.0
MOV R0,#0
DJNZ R0,$
JMP LP
程序段B:
LP: SETB P1.0
DJNZ R0,$
CLR P1.0
DJNZ R0,$
DJNZ R0,$
JMP LP
答:对应程序段A和程序段B,LED都将周期性改换亮灭状况。每个亮灭改换周期内,对程序段A,LED持续亮的时刻与持续灭的时刻长度相同;对程序段B,LED持续亮的时刻是持续灭的时刻长度的2倍。程序段B时的LED亮灭周期约为程序段A时的LED亮灭周期的1.5倍。
使用2:设有51使用体系衔接如使用1附图,且体系所用晶振频率为12MHz。试编写程序段使用51单片机的守时/计数器1完成衔接在P1.0上的LED的显现状况每隔10秒钟翻转一次。
答:
MOV TMOD,#20H;T1守时方法2:8位主动重装入
MOV TH1,#(256-250) ;守时周期250us(对应12MHz晶振,每个机器周期=1us)
MOV TL1,TH1;
CLR TF1;清T1溢出标志
SETB TR1;发动T1计时
MOV R0,#0;R0用于累计T1溢出的次数
MOV R1,#0;R1用于累计R0到达200的次数
LP:JBC TF1,L1;假如TF1为1则清零TF1并转去进行溢出次数累计
JMP LP;循环等候T1溢出
L1:INC R0;累计T1溢出次数
CJNE R0,#200,LP;未到达200次则转去等候下一次溢出
MOV R0,#0;保证R0的值在0~199之间
INC R1;累计时刻到达50ms的次数(250us*200=50ms)
CJNE R1,#200,LP;累计时刻未到达10s则转去等候下一次溢出
MOV R1,#0;保证R1的值在0~199之间
CPL P1.0;累计时刻已到达10s,则翻转P1.0状况1次(50ms*200=10s)
JMP LP;持续循环累计时刻
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/258256.html