INT_TL0_HANDLE:
MOV CPL RETI MOV CPL RETI
TL0, #9CH ;TL0产生200us方波 P1.0
;
;TH0产生100us方波
INT_TH0_HANDLE:
TH0, #0CFH P1.1
;
ORG 0100H MAIN_START: READ_T1: END
MOV CLR SUBB JNC CPL AJMP
C
;产生80us方波 ;
;计数小于初值+7,则让输出翻转。由于读取TL1的计数值 ;范围,只要发生了初值重转,则计数已经溢出。 ;大于则继续读数。直到计数溢出。
A, TL1 ;读T1的计数值 A, #0DFH
;
MOV SETB SETB MOV MOV MOV MOV MOV SETB SETB SETB
TMOD, ET0 ET1
#23H ;T0方式3,T1方式2 ;开T0中断
;开T1中断,注:TH0使用。
; ; ;
TL0, #9CH ;赋初值 TH0, #0CFH TH1, #0D8H TL1, #0D8H EA TR0 TR1
P1, #00H ;输出清零
;开全局中断 ;TL0开始计数
;TH0开始计数,T1计数从方式确定就开始了
;并不是每个计数值都能读到,所以判断时需要给一个大的
READ_T1 P1.2 READ_T1
说明:此程序可以直接运行,但是实际测试结果,只能近似输出题目要求波形。定时/
计数器0是由于软件初值重转的问题,计时器1则是由于每次读数时,由于中断的执行,导致错过读数,所以输出波形的频率是不稳定的。
第7章习题与思考题参考答案
第 25 页 共 47 页
7-1简述MCS-51单片机串行口的四种工作方式的接收和发送数据的过程。 答:(略)
7-2 串行口有几种工作方式?各工作方式的波特率如何确定? 答:
它有四种工作方式:方式0、1、2、3。帧格式有10位、11位。方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,由定时器的溢出率决定。
7-3 若晶体的振荡频率为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,计算用T1作为波特率发生器的方式控制字和计数初值。
解:方式1和方式3的波特率由定时器的溢出率控制,是可变的,表示为:
波特率=(2SMOD /32)×定时器T1的溢出率
定时器T1的溢出率= T1计数率/产生溢出所需的时间
=(fOSC/12)/(2N?TC)
其中:N为定时器T1的位数,TC为定时器T1的预置初值。
2
7-4 简述IC总线的数据传输方式。 答: (略)
2
7-5 编写程序将AT89C51单片机片内40H~47H单元中的八个8位数据通过IC总线接口传送到存储器AT24C01的50H~57H单元中。 答:
ICW: ICWLP1: ICWLP2: ICWLP3: LCALL START MOV A,#0A0H LCALL WOBYT LCALL TACK JB 30H,ICWLP1 MOV A,#50H LCALL WOBYT LCALL TACK JB 30H,ICWLP1 MOV R5,#8 MOV R0,#40H MOV A,@ R0 LCALL WOBYT LCALL TACK JB 30H,ICWLP1 INC R0 DJNZ R5,WLP2 LCALL STOP LCALL DELAY RET ;发送起始信号 ;#10100000B器件地址码, ;发送器件地址 ;检查应答位 ;无应答位,重发 ;50H为待写存储单元首地址 ;发送待写存储单元地址 ;检查应答位 ;无应答位,重发 ;待发送数据块的长度 ;40H为第一个数据的首地址 ;读一个字节数据 ;发送 ;检查应答位 ;无应答位,重发 ;指向下一个要发送的数据 ;要发送数据未发完,再发送 ;全部数据发完,停止 ;延时,等待AT24C01内部写操作 ;返回
7-6简述SPI总线的数据传输方式。 答:(略)
第 26 页 共 47 页
7-7编写程序将AT89C51单片机片内30H、31H单元中的16位数据通过SPI总线接口传送到数字/模拟转换器TLC5615。. 答:
DIN SCLK CS5615 DataH DataL TLC5615: LPH: LPL: BIT P1.1 BIT P1.2 BIT P1.3 EQU 30H EQU 31H ;定义I/O口 CLR SCLK ;准备操作TLC5615 CLR CS5615 ;选中TLC5615 MOV R7,#08H MOV A, DataH ;装入高8位数据 LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN,C SETB SCLK ;产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPH MOV R7,#08H MOV A,DataL ;装入低8位数据 LCALL DELAY ;延时 RLC A ;最高位移向TLC5615 MOV DIN, C SETB SCLK ; 产生上升沿,移入1位数据 LCALL DELAY CLR SCLK DJNZ R7,LPL SETB CS5615 ;结束TLC5615的操作,同时将转换数据代码存入10位DA寄存器,启动新一轮的DA转换 DELAY: RET …(略) RET 7-8简要说明CAN总线、USB总线、1-Wire总线的特点。
答:
CAN的特点:
(1) 较低的成本与极高的总线利用率;
第 27 页 共 47 页
(2) 数据传输距离可长达10km,传输速率可高达1Mbps;
(3) 可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发; (4) 节点在错误严重的情况下具有自动退出总线的功能;
(5) 报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息; (6) 多主机依据优先权进行总线访问,无破坏性的基于竞争的仲裁; (7) 借助接收滤波的多地址帧传送。 USB:
具有传输速度快(USB1.1是12Mbps,USB2.0是480Mbps, USB3.0是5 Gbps),使用方便,支持热插拔,连接灵活,独立供电等优点。
1-Wire:
它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
7-9画出CAN总线控制器SIA1000与单片机的连接电路原理图。 答:
7-10写出PDIUSBD12固件各模块程序的分工。 答:
PDIUSBD12固件各模块程序的分工如下:
硬件提取层:对单片机的I/O口、数据总线等硬件接口进行操作。
PDIUSBD12命令接口:对PDIUSBD12器件进行操作的模块子程序集。
中断服务程序:当PDIUSBD12向单片机发出中断请求时,读取PDIUSBD12的中断传输来的数据,并设定事件标志“EPPFLAGS”和Setup包数据缓冲区“CONROL_XFER”传输给主循环程序。
标准请求处理程序:对USB的标准设备请求进行处理。 厂商请求处理程序:对用户添加的厂商请求进行处理。
主循环程序:发送USB请求、处理USB总线事件和用户功能处理等。
7-11单总线有哪些ROM命令?
第 28 页 共 47 页