80 likes | 250 Views
综合习题课 一 . 编一程序使串行口一帧数据传送 11 位,波特率为 400 波特, 设晶振频率为 1.92MHZ 。写出有关初始化的程序段。 解:选串行口方式 3 ,一帧传送 11 位数据,波特率可设置范围较宽。 SCON : 1 1 0 1 0 0 0 0 D0H 波特率的计算 :选 T1 方式 2 B = f ×2 SMOD 选 SMOD = 1
E N D
综合习题课 一.编一程序使串行口一帧数据传送11位,波特率为400波特, 设晶振频率为 1.92MHZ。写出有关初始化的程序段。 解:选串行口方式3,一帧传送11位数据,波特率可设置范围较宽。 SCON : 1 1 0 1 0 0 0 0 D0H 波特率的计算 :选T1方式2 B = f ×2SMOD 选SMOD = 1 (28 – Z)×12 32 将已知数据代入得 400 = 1.92 ×106 × 21 (28 – Z)×12 32 解之 Z = 231 = E7H
程序段如下: MOV SCON , #0D0H ;串行口方式3,允许接收 MOV PCON , #80H ;SMOD = 1 MOV TMOD , #20H ;T1方式2定时 MOV TH1 , #0E7H ;设置波特率为400波特 MOV TL1 , #0E7H SETB TR1 SETB EA SETB ES
二.要求串行口工作于方式2,允许接收,晶振频率为8MHZ,请写二.要求串行口工作于方式2,允许接收,晶振频率为8MHZ,请写 出符合上述要求的程序段,设置波特率。说明你所设置的波特 率为多少波特以及串行口方式2一帧数据的格式。 解:SCON: 1 0 0 1 0 0 0 0 90H 方式2波特率: B = f×2SMOD 64 将已知数据代入 B = 8×106 × 2SMOD 64 当SMOD = 0 B = 0.125 ×106 波特 当SMOD = 1 B = 0.25 ×106 波特
程序如下: MOV SCON , #90H ;串行口工作于方式2,允许接收 MOV PCON , #80H ;SMOD= 1 SETB EA SETB ES 程序中设置波特率为 0.25 ×106 波特 串行口方式2一帧数据的格式为: 异步发送或接收一帧数据为11位,其格式为: 1 第9位 8 位 数 据 0 停止位 起始位
三.设一系统使用两个中断源T0和INT1,设INT1为高优先级,三.设一系统使用两个中断源T0和INT1,设INT1为高优先级, 请写出有关中断的必要语句。 解:中断允许寄存器IE : EA * * ES ET1 EX1 ET0 EX0 中断优先级寄存器IP:* * *PS PT1 PX1 PT0 PX0 有关中断的程序: SETB ET0 SETB EX1 SETB EA SETB PX1 以下两条指令可代替上述4条,作用相同: MOV IE , #86H MOV IP , #04H
四.编一程序,用8031单片机的定时器控制使P1.0高电平点亮一只发光二极管,一分钟亮,一分钟暗,交替运行。设晶振频率为12MHZ。四.编一程序,用8031单片机的定时器控制使P1.0高电平点亮一只发光二极管,一分钟亮,一分钟暗,交替运行。设晶振频率为12MHZ。 解:定时一分钟需采用多次中断的方法。1分钟=60000ms,可为: 6ms× 100×100 : 5ms×120×100 ; 10ms×60×100等等。 晶振频率 f = 12 ×106HZ,其机器周期为 1μs 最大定时间隔为当定时器选择方式1时: 216 ×1μs = 65.536ms 为了减少中断次数,我们选择定时60ms,中断1000次达到定时 1分钟。定时时间常数的计算: ( 216 - X )×1 ×10-6 = 60 ×10-3 解之得 X = 5536 = 15A0H
程序如下: ORG 0000H AJMP MAIN ORG 000BH LJMP IT0P MAIN: MOV SP , # 60H MOV TMOD , #01H ;T0方式1定时 MOV TH0 , #15H MOV TL0 , #0A0H ;定时60ms时间常数 MOV R0 , #10 MOV R1 , #100 ;计数中断1000次 SETB P1.0 ;点亮发光二极管
SETB EA ;允许CPU中断 SETB ET0 ;允许T0中断 SJMP $ IT0P: MOV TH0 , #15H MOV TL0 , #0A0H ;重装60ms时间常数 DJNZ R0 , RETUN ;计数中断1000次 MOV R0 , #10 DJNZ R1 , RETUN MOV R1 , #100 CPL P1.0 ;交替亮暗 RETUN: RETI