MOV TL0,#0E7H SETB EA SETB ET0 SETB P1.0 SETB TR0 SJMP $ T00:JNB P1.0,QF
MOV TH0,#FFH MOV TL0,#0E7H SJMP DONE QF: MOV TH0,#0FFH
MOV TL0,#6AH DONE:CPL P1.0 RETI END 6-5 利用定时器来测量单次正脉冲宽度,采用何种方式可获得最大量程?设f0sc=6MHz,求允许测量的最大脉冲宽度是多少? 答:定时器方式1,最大脉冲宽度为2us*216=131.072ms 6-6 试编制一程序,其功能为:当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6与R7。 解:P1.1接P3.4引脚,利用T0做计数器,工作于方式1,初值为0(T0未工作于中断方式)
ORG 0000H LJMP MAIN ;ORG 000BH ORG 0100H MAIN: MOV SP,#60H MOV R6,#0 MOV R7,#0 MOV TMOD,#05H MOV TH0,#0 MOV TL0,#0 LOOP:JNB P1.2,LOOP
SETB TR0
LOOP1:JB P1.2,LOOP1
CLR TR0 MOV R6,TH0 MOV R7,TL0 SJMP $ END
6-7 试用中断技术设计一发光二极管LED闪烁电路,闪烁周期为2s,要求亮1s,再暗1s。
解:设P1.0接1发光二极管,低电平点亮;利用定时器T0,工作于定时器方式2,设系统频率为fosc=12MHz,则一个定时脉冲为1us,每次中断定时250us,则需要4000个中断实现1s的定时
利用R6,R7做软件计数器,初值分别为40,100;定时初值28-250=06H
ORG 0000H LJMP MAIN ORG 000BH LJMP T00 ORG 0100H
MAIN:MOV SP,#60H
MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H MOV R6,#40 MOV R7,#100 CLR P1.0 SETB EA SETB ET0 SETB TR0 SJMP $ T00:DJNZ R6,DONE MOV R6,#40 DJNZ R7,DONE MOV R7,#100 DONE:CPL P1.0 RETI END 6-8 试用中断方法设计秒、分脉冲发生器,即由8031的P1.0每秒产生一个机器周期的正脉冲,由P1.1每分钟产生一个机器周期的正脉冲。 解:设系统时钟频率为12MHz,则一个计数脉冲为1us,利用T0做定时器记录50ms,计数初值为216-50000=3CB0H,利用R6,R7为软件计数器,初值为20,60,分别实现1s和1分钟的定时 ORG 0000H LJMP MAIN ORG 000BH LJMP T00 ORG 0100H
MAIN:MOV SP, #60H
MOV TMOD, #01H ;T0定时器,工作方式1 MOV TH0, #3CH
MOV TL0, #0B0H ;装入50ms的初始值 MOV R6,#20 MOV R7,#60
CLR P1.0 ;P1.0,P1.1均输出低电平 CLR P1.1 SETB EA SETB ET0
SETB TR0 ;中断允许,开始定时 SJMP $
T00: DJNZ R6,DONE ;R6-1=0,定时1秒时间到
SETB P1.0 ;P1.0输出1us的高电平 CLR P1.0 ;P1.0继续输出低电平 MOV R6,#20
DJNZ R7,DONE ;R7-1=0,定时1分钟时间到 SETB P1.1 ;P1.1输出1us的高电平 CLR P1.1 ;P1.1继续输出低电平 MOV R7,#60 DONE: MOV TH0,#3CH MOV TL0,#0B0H RETI END
第七章串口工作方式0——关于I0接口的扩展
7-1利用74LS164并行输出8只发光二极管,将二极管从左至右点亮,时间间隔1S左右,并循环往复,画出电路原理图,编程实现。(P109)
ORG 0100H
MOV SCON,#00H MOV A,#80H LOOP:MOV SBUF,A
ACALL DEL1S RR A
SJMP LOOP
7-4利用MCS-51系列单片机的串行接口设计键盘输入电路(P111)
第九章 模拟量输入输出接口技术 9-1 在一个fosc为12MHz的8031单片机系统中,接有一片DAC0832,它的地址为7FFFH,输出电压为0-5V,请画出有关逻辑框图并编写程序,使其运行后能在示波器上显示锯齿波(设示波器X方向扫描频率为50us/格,Y方向扫描频率为1V/格)。 答:ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV SP,#60H MOV DPTR,#7FFFH LOOP:MOV A,#00H LOOP1:MOVX @DPTR,A ;2 INC A ;1 CJNE A,#0,LOOP1 ;2 SJMP LOOP END 输出波形为周期是255us,幅值为5V的锯齿波. 9-2 在fosc=12MHz的系统中,接有ADC0809,地址为7FF8H-7FFFH,试画出逻辑框图并编写ADC0809的初始化程序和定时取样通道2的程序(假设取样频率为1ms一次,每次取样4个数据,存于8031单片机内部RAM70h-73h中)。 答:P1.0连接0809的START端 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV SP,#60H MOV DPTR,#7FFAH MOV 70H,#0 MOV 71H,#0 MOV 72H,#0 MOV 73H,#0 MOV R2,#4 MOV R0,#70H LOOP:
ACALL DEL_1ms LOOP1: SETB P1.0 NOP