单片机复习材料(11)
时间:2025-03-09
时间:2025-03-09
例7-4 利用T0门控位测试 INT0引脚上出现的正脉冲宽度,已知晶振频率为12MHz,将所测得值最高位存入片内71H单元,低位存入70H单元。
解:设外部脉冲 由(P3.2)输入,T0工作于定时方式 1(16位计数),GATE设为1。测试时,应在INT0 低电平时,设置TR0为1(16位计数);当INT0 变为高电平时,就启动计数; 再次变低时,停止计数。此计数值与机器周期的乘积即为被测正脉冲的宽度。因fosc=12MHZ,机器周期为1us,测试过程如下。 源程序如下:
SETB TR0 INC R0 MOV TMOD,#09H
JNB P3.2, $ MOV @R0,TH0 MOV TL0,#00H
JB P3.2,$ SJMP $ MOV TH0,#00H
CLR TR0 MOV R0,#70H
JB P3.2, $ MOV @R0,TL0
7.5利用定时/计算器T2作为时钟发生器,从P1.0输出频率为1KHZ的脉冲,设fosc=12MHZ MOV T2MOD, #02H MOV RCAP2L, #48H MOV T2CN, #00H SETB TR2 MOV RCAP2H, #0F4H RET 7.6测量脉冲信号的周期,并存放于R6R5中 ORG 0000H SETB ET2 MS:JBC EXF2, NEXT AJMP MAIN SETB TR2 CLR TF2 ORG 002BH RET1 WAIT:CJNEE R0, #02H, WAIT AJMP MS CLR ET2 NEXT:MOV @R1, RCAP2L ORG 0040H CLR EA INC R1
CLR C MOV @R1, RCAP2H MAIN:MOV T2MOD, #00H
MOV T2CON, #09H MOV A, 72H INC R1 MOV TL2, #00H SUBB A,70H INC R0
MOV TH2, #00H MOV R5, A RET1 MOV R1, #70H MOV A, 73H END MOV R0, #00H SUBB A, 71H SETB EA MOV R6, A
8.1 在内部数据存储器20H~3FH单元中共有32个数据,要求采用方式串行发送出去,传送速率为1200波特,设fosc=12MHZ.
解:T1工作于方式 2 作波特率发生器,取SMOD=0,T1的时间常数计算如下: 波特率=2smod/32×fosc/12×(256-X)
1200=(1/32)×12×10 /12(256-x)
x=230=E6H (1)查询方式编程 发送程序:
ORG 0000H MOV R0, #20H INC R0 MOV TMOD, #20H MOV R7, #32 DJNZ R7, LO MOV TH1, #0E6H LO0P: MOV SBUF,@R0 MOV TL1, #0E6H JNB TI, SJMP $ SETB TR1 $ MOV SCON, #40H CLR TI