08212032_程仕湘_单片机原理与应用课程作业
使用。而TH0只能作8位定时使用,并占用了T1的控制启动位TR1和溢出标志位TF1。T1只能工作在方式0、方式1或方式2,只能用在不需中断控制的场合。
工作方式3是为了在使用串行口时,需要两个独立的计数器而特别提供的。因为此时把定时器1规定用作串行通信的波特率发生器,并设定为工作方式2,使用时只要将计数器初值送到计数器寄存器即开始工作,启动后不需要软件干预,也不使用溢出标志。
9、设晶振频率为6MHz。编程实现:使用定时器T0工作在方式2、定时,在P1.4输出周期为100us,占空比为4:1的矩形脉冲。
答:使用晶体振荡器频率为6MHz时,1个机器周期为2us。欲使占空比为4:1,可将矩形脉冲分为5份,前4份P1.4输出高电平,第5份输出低电平。计数初值:t?(28?T0初值)?机器周期。计数初值满足:(256-Y)*2us=20us,解得计数初值为Y=246=0F6H,则TH0=TL0=0F6H。
TMOD寄存器定义: D7 D6 D5 GATE M1 C/T 定时器1 定时器工作方式定义: M1 M0 工作方式 0 0 0 0 1 1 1 0 2 1 1 3 D4 M0 D3 GATE D2 D1 M1 C/T 定时器0 D0 M0 说明 13位定时器/计数器 16位定时器/计数器 可重装8位定时器/计数器 T0分成两个8位定时器/计数器,T1停止计数 定时器0,定时方式2,故TMOD设置:00000010=02H,。程序如下: ORG 2000H
START: MOV TMOD, #02H //定时器0,定时方式2
10
08212032_程仕湘_单片机原理与应用课程作业
MOV TL0, 0F6H //初值送TL0 MOV TH0, 0F6H //初值送TH0 SETB P1.4 //P1.4置高 SETB TR0 //允许T0计数
LOOP: MOV R0, #4 //由于是4:1,故计数周期定为4 WAIT1: JNB TF0,WAIT1 //等待定时器T0溢出标志位
CLR TF0 //软件清零TF0
DJNZ R0,WAIT1 //判断R0是否等于0,即判断是否循环了四次 CPL P1.4 //对P1.4取反
WAIT2: JNB TF0,WAIT2//等待定时器T0溢出标志位,即判断是否循环一次
CLR TF0 //软件清零TF0 CPL P1.4 //对P1.4再次取反 SJMP LOOP //程序循环运行
第六章
2、MCS-51单片机的串行口共有哪几种工作方式?各有什么特点和功能?P129
答: MCS-51单片机的串行口共有以下四种工作方式:
工作方式0:SM1SM0=00,为同步移位寄存器。当一个数据写入串行口发送缓冲器时,串行口即将8位数据以fosc/12的固定波特率从RXD引脚输出,低位在先,TXD为移位脉冲信号输出端。发送完8位数据后中断标志
11
08212032_程仕湘_单片机原理与应用课程作业
位T1置“1”。
特点是:移位寄存器的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后,波特率固定,一个机器周期移位一次。
工作方式1:SM1SM0=01,串行口被定义为波特率可变的8位异步通信接口。方式1的波特率=(2smod/32) x定时器T1的溢出率
特点为:一帧信息为10位,其中1位起始位“0”,8位数据位(地位在前)和一位停止位“1”,其波特率可变。
工作方式2:SM1SM0=10,串行口被定义为9位异步通信接口。 方式2的波特率=(2smod/64) x 振荡器频率
特点是:一帧信息为11位,1位起始位“0”,8位数据位(低位再前),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
工作方式3:SM1SM0=11,串行口被定义为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2完全相同。 方式3的波特率=(2smod/32) x 定时器T1的溢出率
特点:一帧信息为11位,1位起始位“0”,8位数据位(低位在先),1位可编程为“1”或“0”的第9位数据,1位停止位“1”。
3、MCS-51单片机4种工作方式的波特率应如何确定?P134
答: MCS-51单片机波特率的确定方法:
(1)方式0的波特率=fosc/12
(2)方式1的波特率=(2smod/32) x定时器T1的溢出率。 (3)方式2的波特率=(2smod/64) x 振荡器频率
12
08212032_程仕湘_单片机原理与应用课程作业
(4)方式3的波特率=(2smod/32) x 定时器T1的溢出率
7、请用查询法编写程序实现串行口工作方式1下的发送程序。设单片机主频为11.0592MHz,波特率为1200bps、发送数据缓冲区在外部RAM,起始地址为1000H,数据块长度为30B,采用偶校验(其他条件自设)。
答:
1) 设数据为ASCII码形式,最高位作为奇偶校验位。 2) T1作为波特率发生器,工作于方式2。
TMOD寄存器定义: D7 D6 GATE D5 D4 M0 D3 GATE D2 D1 D0 M0 M1 C/T 定时器1 M0 0 1 0 1 工作方式 0 1 2 3 M1 C/T 定时器0 说明 定时器工作方式定义: M1 0 0 1 1 13位定时器/计数器 16位定时器/计数器 可重装8位定时器/计数器 T0分成两个8位定时器/计数器,T1停止计数 故,TMOD=20H;
3) 设SMOD=0。 4) 串行口工作在方式1
SCOD寄存器定义: D7 D6 SM0 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI 波特率 主振频率/12 可变 主振频率/32或主振频率/64 可变 D0 RI 串行口工作方式定义:
SM0 SM1 工作方式 0 0 1 1 0 1 0 1 0 1 2 3 方式简单描述 移位寄存器I/O 8位UART 9位UART 9位UART 故,SCON=40H; 5) 波特率为1200bps
13
08212032_程仕湘_单片机原理与应用课程作业
方式1的波特率=SMOD232fosc?定时器T1的溢出率
定时器T1的溢出率=1??? K12?2-初值???初值=2-K2SMOD?fosc384?波特率=256-11059200384?1200=232=0E8H
通过计算得T1的时间常数为0E8H。
程序如下: ORG 1000H
START: MOV TMOD, #20H MOV TL1, #0E8H
MOV TH1, #0E8H
MOV PCON, #00H SETB TR1
MOV SCON, #40H MOV DPTR, #1000H
MOV R2, #30 LOOP: MOVX A, @DPTR
MOV C, P MOV ACC.7, C MOV SBUF, A WAIT: JNB TI, WAIT CLR TI INC DPTR
;T1工作方式2
;SMOD=0波特率不倍增;启动T1 ;串行口工作方式1 ;
;计数值30
;送奇偶标志 ;
;发送字符 ;
;
14