分析串口通信特殊寄存器如何配置
1. 要设置51系列单片机串口工作于所需工作方式,应是对哪个专用寄存器进行操作
控制51单片机串行口的控制寄存器共有两个:特殊功能寄存器SCON和PCON。下面对这两个寄存器各个位的功能予以详细介绍。
1.串行口控制寄存器SCON
串行口控制寄存器SCON的格式如表4.4:
SM0、SM1:串行口4种工作方式的选择位。
SM2:允许方式2和3的多机通讯控制位。在方式2或3中,如果SM2置为l,则接收到的第9位数据(RB8)为0时不激活RI。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时,SM2必须清0。
REN:允许串行接收位。由软件置1或清0。REN=l允许接收,REN=O则禁止接收。
TB8:是工作在方式2和3时,要发送的第9位数据。需要时由软件置1或清0。在许多的通讯协议中该位是奇偶校验垃。在多机通讯中用来表示是地址帧或是数据帧,TB8=1为地址帧,TB8=0为数据帧。
RB8:当工作在方式2和3时,为接收到的第9位数据。在多机通讯中为地址帧或数据帧的标识位。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
T1:发送中断标志位,在方式O串行发送第8位数据结束时由硬件置1,或在其它方式串行发送停止位的开始时置1。TI=1时,申请中断,CPU响应中断后,发送下一帧数据。TI必须由软件清0。 表4.4 串行口控制寄存器SCON的格式
RI:接收中断标志位,在方式O串行接收到第8位数据结束时,由硬件置1。在其它方式中,串行接收到停止位的中间点时置1。RI=1时申请中断,要求CPU取走数据。但在方式1中,SM2=1时,若未收到有效的停止位,不会对RI置1。RI必须由软件清0。
SCON的所有位都能由软件清0。
2.特殊功能寄存器PCON
特殊功能寄存器PCON没有位寻址功能。PCON的格式如表4.5:
表4.5 特殊功能寄存器PCON的格式
D7 D6 D5 D4 D3 D2 D1 D0
SMON × × × × × × ×
SMOD:波特率系数选择位。
3.串行口工作方式
方式0:8位移位寄存器输入/输出方式。在扩展I/O端口外接移位寄存器时常用,其波特率固定为Fosc/12, Fosc为时钟频率;
方式1:10位异步通信方式。其中1个起始位,8个数据位和一个停止位,其波特率计算公式为:波特率=2的SMOD次方/32*(定时器T1的溢出率);
方式2,3:11位异步通信方式,其中一个起始位,8个数据位,1个附加的第9位和1个停止位,方式2和方式3仅只有波特率不同,方式2的波特率=2的SMOD次方/64*Fosc,方式3的波特率=2的SMOD次方/32*(定时器T1的溢出率)。
此次系统串行口工作方式是:01。
SM0、SM1两位为01时,串行口以方式1上作,方式1时串行口被控制为波特率可变的8位异步通讯接口。方式1的波特彩由下式确定:
方式l波特率=2的(SMOD-5)次方*定时器1的溢出率
式中SMOD为PCON寄存器的最高位的值(0或1)。
因为串行口用于连接打印机,所以这里只介绍串行口输出情况。
串行口以方式1输出时,数据位由TXD端输出,发送—帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1,CPU执行一条数据写发送缓冲器SBUF的指令,就启动发送。当发送完数据位,置“1”中断标志TI。
2. 单片机串口通信需要用哪些寄存器
51单片机串口工作时,涉及到以下三个寄存器:
1.SCON:串行口工作寄存器
2.IE:中断允许寄存器(如果用到中断方式的话)
3.PCON:其中最高位SMOD与波特率有关
另外还有定时器T1在方式1,方式3时需要用到,以改变波特率。
3. 用STC12C2052AD的单片机进行串口通信,波特率为115200HZ,那么怎样设置相关寄存器 请大师指教,谢谢!
void UartInit(void) //[email protected]
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE8; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
或者
UARTINIT: ;[email protected]
MOV SCON,#50H ;8位数据,可变波特率
ORL AUXR,#40H ;定时器1时钟为Fosc,即1T
ANL AUXR,#0FEH ;串口1选择定时器1为波特率发生器
ANL TMOD,#0FH ;设定定时器1为16位自动重装方式
MOV TL1,#0E8H ;设定定时初值
MOV TH1,#0FFH ;设定定时初值
CLR ET1 ;禁止定时器1中断
SETB TR1 ;启动定时器1
RET
4. 串口通信一般对哪些寄存器操作
不 都如此吧?
电脑串口通信 用现成的控件,如 mscomm 或者 serialport 等
几乎不涉及寄存器
但 单片机 串口通信 就 要设置 相关的 寄存器
所以要针对 具体的 情况来说
5. DMA寄存器怎样配置
楼上真有意思,把说明书传真?哪个商家愿意这么干?补寄都不一定愿意呢。
你说的是哪两个液晶的数字吧?
这东西说明书也没有说的,是状态代码。
1、特殊代码“00”和“FF”及其它起始码有三种情况出现:
①已由一系列其它代码之后再出现:“00”或“FF”,则主板OK。
②如果将CMOS中设置无错误,则不严重的故障不会影响BIOS自检的继续,而最终出现“00”或“FF”。
③一开机就出现“00”或“FF”或其它起始代码并且不变化则为板没有运行起来。
2、本表是按代码值从小到大排序,卡中出码顺序不定。
3、未定义的代码表中未列出。
4、对于不同BIOS(常用的AMI、Award、Phoenix)用同一代码所代表的意义有所不同,因此应弄清您所检测的电脑是属于哪一种类型的BIOS,您可查问你的电脑使用手册,或从主板上的BIOS芯片上直接查看,也可以在启动屏幕时直接看到。
5、有少数主板的PCI槽只有前一部分代码出现,但ISA槽则有完整自检代码输出。且目前已发现有极个别原装机主板的ISA槽无代码输出,而PCI槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。另外,同一块主板的不同PCI槽,有的槽有完整<代码送出,如DELL810主板只有靠近CPU的一个PCI槽有完整的代码显示,一直变化到“00”或“FF”,而其它槽走到“38”则不继续变化。
6、复位信号所需时间ISA与PCI不一定同步,故有可能ISA开始出代码,但PCI的复位灯还不熄,故PCI代码停在起始码上。
代码 Award BIOS Ami BIOS Phoenix BIOS或Tandy 3000 BIOS
00 . 已显示系统的配置;即将控制INI19引导装入。 .
01 处理器测试1,处理器状态核实,如果测试失败,循环是无限的。 处理器寄存器的测试即将开始,不可屏蔽中断即将停用。 CPU寄存器测试正在进行或者失败。
02 确定诊断的类型(正常或者制造)。如果键盘缓冲器含有数据就会失效。 停用不可屏蔽中断;通过延迟开始。 CMOS写入/读出正在进行或者失灵。
03 清除8042键盘控制器,发出TESTKBRD命令(AAH) 通电延迟已完成。 ROM BIOS检查部件正在进行或失灵。
04 使8042键盘控制器复位,核实TESTKBRD。 键盘控制器软复位/通电测试。 可编程间隔计时器的测试正在进行或失灵。
05 如果不断重复制造测试1至5,可获得8042控制状态。 已确定软复位/通电;即将启动ROM。 DMA初如准备正在进行或者失灵。
06 使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。 已启动ROM计算ROM BIOS检查总和,以及检查键盘缓冲器是否清除。 DMA初始页面寄存器读/写测试正在进行或失灵。
07 处理器测试2,核实CPU寄存器的工作。 ROM BIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。 .
08 使CMOS计时器作初始准备,正常的更新计时器的循环。 已向键盘发出BAT命令,即将写入BAT命令。 RAM更新检验正在进行或失灵。
09 EPROM检查总和且必须等于零才通过。 核实键盘的基本保证测试,接着核实键盘命令字节。 第一个64K RAM测试正在进行。
0A 使视频接口作初始准备。 发出键盘命令字节代码,即将写入命令字节数据。 第一个64K RAM芯片或数据线失灵,移位。
0B 测试8254通道0。 写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。 第一个64K RAM奇/偶逻辑失灵。
0C 测试8254通道1。 键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。 第一个64K RAN的地址线故障。
0D 1、检查CPU速度是否与系统时钟相匹配。2、检查控制芯片已编程值是否符合初设置。3、视频通道测试,如果失败,则鸣喇叭。 已处理NOP命令;接着测试CMOS停开寄存器。 第一个64K RAM的奇偶性失灵
0E 测试CMOS停机字节。 CMOS停开寄存器读/写测试;将计算CMOS检查总和。 初始化输入/输出端口地址。
0F 测试扩展的CMOS。 已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。 .
10 测试DMA通道0。 CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。 第一个64K RAM第0位故障。
11 测试DMA通道1。 CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。 第一个64DK RAM第1位故障。
12 测试DMA页面寄存器。 停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。 第一个64DK RAM第2位故障。
13 测试8741键盘控制器接口。 视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。 第一个64DK RAM第3位故障。
14 测试存储器更新触发电路。 电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。 第一个64DK RAM第4位故障。
15 测试开头64K的系统存储器。 第2通道计时器测试了一半;8254第2通道计时器即将完成测试。 第一个64DK RAM第5位故障。
16 建立8259所用的中断矢量表。 第2通道计时器测试结束;8254第1通道计时器即将完成测试。 第一个64DK RAM第6位故障。
17 调准视频输入/输出工作,若装有视频BIOS则启用。 第1通道计时器测试结束;8254第0通道计时器即将完成测试。 第一个64DK RAM第7位故障。
18 测试视频存储器,如果安装选用的视频BIOS通过,由可绕过。 第0通道计时器测试结束;即将开始更新存储器。 第一个64DK RAM第8位故障。
19 测试第1通道的中断控制器(8259)屏蔽位。 已开始更新存储器,接着将完成存储器的更新。 第一个64DK RAM第9位故障。
1A 测试第2通道的中断控制器(8259)屏蔽位。 正在触发存储器更新线路,即将检查15微秒通/断时间。 第一个64DK RAM第10位故障。
1B 测试CMOS电池电平。 完成存储器更新时间30微秒测试;即将开始基本的64K存储器测试。 第一个64DK RAM第11位故障。
1C 测试CMOS检查总和。 . 第一个64DK RAM第12位故障。
1D 调定CMOS配置。 . 第一个64DK RAM第13位故障。
1E 测定系统存储器的大小,并且把它和CMOS值比较。 . 第一个64DK RAM第14位故障。
1F 测试64K存储器至最高640K。 . 第一个64DK RAM第15位故障。
20 测量固定的8259中断位。 开始基本的64K存储器测试;即将测试地址线。 从属DMA寄存器测试正在进行或失灵。
21 维持不可屏蔽中断(NMI)位(奇偶性或输入/输出通道的检查)。 通过地址线测试;即将触发奇偶性。 主DMA寄存器测试正在进行或失灵。
22 测试8259的中断功能。 结束触发奇偶性;将开始串行数据读/写测试。 主中断屏蔽寄存器测试正在进行或失灵。
23 测试保护方式8086虚拟方式和8086页面方式。 基本的64K串行数据读/写测试正常;即将开始中断矢量初始化之前的任何调节。 从属中断屏蔽存器测试正在进行或失灵。
24 测定1MB以上的扩展存储器。 矢量初始化之前的任何调节完成,即将开始中断矢量的初始准备。 设置ES段地址寄存器注册表到内存高端。
25 测试除头一个64K之后的所有存储器。 完成中断矢量初始准备;将为旋转式断续开始读出8042的输入/输出端口。 装入中断矢量正在进行或失灵。
26 测试保护方式的例外情况。 读出8042的输入/输出端口;即将为旋转式断续开始使全局数据作初始准备。 开启A20地址线;使之参入寻址。
27 确定超高速缓冲存储器的控制或屏蔽RAM。 全1数据初始准备结束;接着将进行中断矢量之后的任何初始准备。 键盘控制器测试正在进行或失灵。
28 确定超高速缓冲存储器的控制或者特别的8042键盘控制器。 完成中断矢量之后的初始准备;即将调定单色方式。 CMOS电源故障/检查总和计算正在进行。
29 . 已调定单色方式,即将调定彩色方式。 CMOS配置有效性的检查正在进行。
2A 使键盘控制器作初始准备。 已调定彩色方式,即将进行ROM测试前的触发奇偶性。 置空64K基本内存。
2B 使磁盘驱动器和控制器作初始准备。 触发奇偶性结束;即将控制任选的视频ROM检查前所需的任何调节。 屏幕存储器测试正在进行或失灵。
2C 检查串行端口,并使之作初始准备。 完成视频ROM控制之前的处理;即将查看任选的视频ROM并加以控制。 屏幕初始准备正在进行或失灵。
2D 检测并行端口,并使之作初始准备。 已完成任选的视频ROM控制,即将进行视频ROM回复控制之后任何其他处理的控制。 屏幕回扫测试正在进行或失灵。
2E 使硬磁盘驱动器和控制器作初始准备。 从视频ROM控制之后的处理复原;如果没有发现EGA/VGA就要进行显示器存储器读/写测试。 检测视频ROM正在进行。
2F 检测数学协处理器,并使之作初始准备。 没发现EGA/VGA;即将开始显示器存储器读/写测试。 .
30 建立基本内存和扩展内存。 通过显示器存储器读/写测试;即将进行扫描检查。 认为屏幕是可以工作的。
31 检测从C800:0至EFFF:0的选用ROM,并使之作初始准备。 显示器存储器读/写测试或扫描检查失败,即将进行另一种显示器存储器读/写测试。 单色监视器是可以工作的。
32 对主板上COM/LTP/FDD/声音设备等I/O芯片编程使之适合设置值。 通过另一种显示器存储器读/写测试;却将进行另一种显示器扫描检查。 彩色监视器(40列)是可以工作的。
33 . 视频显示器检查结束;将开始利用调节开关和实际插卡检验显示器的关型。 彩色监视器(80列)是可以工作的。
34 . 已检验显示器适配器;接着将调定显示方式。 计时器滴答声中断测试正在进行或失灵。
35 . 完成调定显示方式;即将检查BIOS ROM的数据区。 停机测试正在进行或失灵。
36 . 已检查BIOS ROM数据区;即将调定通电信息的游标。 门电路中A-20失灵。
37 . 识别通电信息的游标调定已完成;即将显示通电信息。 保护方式中的意外中断。
38 . 完成显示通电信息;即将读出新的游标位置。 RAM测试正在进行或者地址故障>FFFFH。
39 . 已读出保存游标位置,即将显示引用信息串。 .
3A . 引用信息串显示结束;即将显示发现信息。 间隔计时器通道2测试或失灵。
3B 用OPTI电路片(只是486)使辅助超高速缓冲存储器作初始准备。 已显示发现<ESC>信息;虚拟方式,存储器测试即将开始。 按日计算的日历时钟测试正在进行或失灵。
3C 建立允许进入CMOS设置的标志。 . 串行端口测试正在进行或失灵。
3D 初始化键盘/PS2鼠标/PNP设备及总内存节点。 . 并行端口测试正在进行或失灵。
3E 尝试打开L2高速缓存。 . 数学协处理器测试正在进行或失灵。
40 . 已开始准备虚拟方式的测试;即将从视频存储器来检验。 调整CPU速度,使之与外围时钟精确匹配。
41 中断已打开,将初始化数据以便于0:0检测内存变换(中断控制器或内存不良) 从视频存储器检验之后复原;即将准备描述符表。 系统插件板选择失灵。
42 显示窗口进入SETUP。 描述符表已准备好;即将进行虚拟方式作存储器测试。 扩展CMOS RAM故障。
43 若是即插即用BIOS,则串口、并口初始化。 进入虚拟方式;即将为诊断方式实现中断。 .
44 . 已实现中断(如已接通诊断开关;即将使数据作初始准备以检查存储器在0:0返转。) BIOS中断进行初始化。
45 初始化数学协处理器。 数据已作初始准备;即将检查存储器在0:0返转以及找出系统存储器的规模。 .
46 . 测试存储器已返回;存储器大小计算完毕,即将写入页面来测试存储器。 检查只读存储器ROM版本。
47 . 即将在扩展的存储器试写页面;即将基本640K存储器写入页面。 .
48 . 已将基本存储器写入页面;即将确定1MB以上的存储器。 视频检查,CMOS重新配置。
49 . 找出1BM以下的存储器并检验;即将确定1MB以上的存储器。 .
4A . 找出1MB以上的存储器并检验;即将检查BIOS ROM数据区。 进行视频的初始化。
4B . BIOS ROM数据区的检验结束,即将检查<ESC>和为软复位清除1MB以上的存储器。 .
4C . 清除1MB以上的存储器(软复位)即将清除1MB以上的存储器. 屏蔽视频BIOS ROM。.
4D 已清除1MB以上的存储器(软复位);将保存存储器的大小。 .
4E 若检测到有错误;在显示器上显示错误信息,并等待客户按<F1>键继续。 开始存储器的测试:(无软复位);即将显示第一个64K存储器的测试。 显示版权信息。
4F 读写软、硬盘数据,进行DOS引导。 开始显示存储器的大小,正在测试存储器将使之更新;将进行串行和随机的存储器测试。 .
50 将当前BIOS监时区内的CMOS值存到CMOS中。 完成1MB以下的存储器测试;即将高速存储器的大小以便再定位和掩蔽。 将CPU类型和速度送到屏幕。
51 . 测试1MB以上的存储器。 .
52 所有ISA只读存储器ROM进行初始化,最终给PCI分配IRQ号等初始化工作。 已完成1MB以上的存储器测试;即将准备回到实址方式。 进入键盘检测。
53 如果不是即插即用BIOS,则初始化串口、并口和设置时种值。 保存CPU寄存器和存储器的大小,将进入实址方式。 .
54 . 成功地开启实址方式;即将复原准备停机时保存的寄存器。 扫描“打击键”
55 . 寄存器已复原,将停用门电路A-20的地址线。 .
56 . 成功地停用A-20的地址线;即将检查BIOS ROM数据区。 键盘测试结束。
57 . BIOS ROM数据区检查了一半;继续进行。 .
58 . BIOS ROM的数据区检查结束;将清除发现<ESC>信息。 非设置中断测试。
59 . 已清除<ESC>信息;信息已显示;即将开始DMA和中断控制器的测试。 .
5A . . 显示按“F2”键进行设置。
5B . . 测试基本内存地址。
5C . . 测试640K基本内存。
60 设置硬盘引导扇区病毒保护功能。 通过DMA页面寄存器的测试;即将检验视频存储器。 测试扩展内存。
61 显示系统配置表。 视频存储器检验结束;即将进行DMA#1基本寄存器的测试。 .
62 开始用中断19H进行系统引导。 通过DMA#1基本寄存器的测试;即将进行DMA#2寄存器的测试。 测试扩展内存地址线。
63 . 通过DMA#2基本寄存器的测试;即将检查BIOS ROM数据区。 .
64 . BIOS ROM数据区检查了一半,继续进行。 .
65 . BIOS ROM数据区检查结束;将把DMA装置1和2编程。 .
66 . DMA装置1和2编程结束;即将使用59号中断控制器作初始准备。 Cache注册表进行优化配置。
67 . 8259初始准备已结束;即将开始键盘测试。 .
68 . . 使外部Cache和CPU内部Cache都工作。
6A . . 测试并显示外部Cache值。
6C . . 显示被屏蔽内容。
6E . . 显示附属配置信息。
70 . . 检测到的错误代码送到屏幕显示。
72 . . 检测配置有否错误。
74 . . 测试实时时钟。
76 . . 扫查键盘错误。
7A . . 锁键盘。
7C . . 设置硬件中断矢量。
7E . . 测试有否安装数学处理器。
80 . 键盘测试开始,正在清除和检查有没有键卡住,即将使键盘复原。 关闭可编程输入/输出设备。
81 . 找出键盘复原的错误卡住的键;即将发出键盘控制端口的测试命令。 .
82 . 键盘控制器接口测试结束,即将写入命令字节和使循环缓冲器作初始准备。 检测和安装固定RS232接口(串口)。
83 . 已写入命令字节,已完成全局数据的初始准备;即将检查有没有键锁住。 .
84 . 已检查有没有锁住的键,即将检查存储器是否与CMOS失配。 检测和安装固定并行口。
85 . 已检查存储器的大小;即将显示软错误和口令或旁通安排。 .
86 . 已检查口令;即将进行旁通安排前的编程。 重新打开可编程I/O设备和检测固定I/O是否有冲突。
87 . 完成安排前的编程;将进行CMOS安排的编程。 .
88 . 从CMOS安排程序复原清除屏幕;即将进行后面的编程。 初始化BIOS数据区。
89 . 完成安排后的编程;即将显示通电屏幕信息。 .
8A . 显示头一个屏幕信息。 进行扩展BIOS数据区初始化。
8B . 显示了信息:即将屏蔽主要和视频BIOS。 .
8C . 成功地屏蔽主要和视频BIOS,将开始CMOS后的安排任选项的编程。 进行软驱控制器初始化。
8D . 已经安排任选项编程,接着检查滑了鼠和进行初始准备。 .
8E . 检测了鼠标以及完成初始准备;即将把硬、软磁盘复位。 .
8F . 软磁盘已检查,该磁盘将作初始准备,随后配备软磁盘。 .
90 . 软磁盘配置结束;将测试硬磁盘的存在。 硬盘控制器进行初始化。
91 . 硬磁盘存在测试结束;随后配置硬磁盘。 局部总线硬盘控制器初始化。
92 . 硬磁盘配置完成;即将检查BIOS ROM的数据区。 跳转到用户路径2。
93 . BIOS ROM的数据区已检查一半;继续进行。 .
94 . BIOS ROM的数据区检查完毕,即调定基本和扩展存储器的大小。 关闭A-20地址线。
95 . 因应鼠标和硬磁盘47型支持而调节好存储器的大小;即将检验显示存储器。 .
96 . 检验显示存储器后复原;即将进行C800:0任选ROM控制之前的初始准备。 “ES段”注册表清除。
97 . C800:0任选ROM控制之前的任何初始准备结束,接着进行任选ROM的检查及控制。 .
98 . 任选ROM的控制完成;即将进行任选ROM回复控制之后所需的任何处理。 查找ROM选择。
99 . 任选ROM测试之后所需的任何初始准备结束;即将建立计时器的数据区或打印机基本地址。 .
9A . 调定计时器和打印机基本地址后的返回操作;即调定RS-232基本地址。 屏蔽ROM选择。
9B . 在RS-232基本地址之后返回;即将进行协处理器测试之初始准备。 .
9C . 协处理器测试之前所需初始准备结束;接着使协处理器作初始准备。 建立电源节能管理。
9D . 协处理器作好初始准备,即将进行协处理器测试之后的任何初始准备。 .
9E . 完成协...
参考资料:http://blog.tom.com/liling1208/article/1675.html
打字不易,如满意,望采纳。
6. 谁能介绍一下单片机串口通信的知识如何应用
7.1 计算机串行通信基础
随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。
通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
计算机通信是将计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换 。可以分为两大类:并行通信与串行通信。
并行通信通常是将数据字节的各位用多条数据线同时进行传送 。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。
7.1.1 串行通信的基本概念
一、异步通信与同步通信
1、异步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信的数据格式 :
2、同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。
面向字符的同步格式 :
面向位的同步格式 :
二、串行通信的传输方向
1、单工
单工是指数据传输仅能沿一个方向,不能实现反向传输。
2、半双工
半双工是指数据传输可以沿两个方向,但需要分时进行。
3、全双工
全双工是指数据可以同时进行双向传输。
三、信号的调制与解调
利用调制器(Molator)把数字信号转换成模拟信号,然后送到通信线路上去,再由解调器(Demolator)把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器MODEM。
四、串行通信的错误校验
1、奇偶校验
在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。
五、传输速率与传输距离
1、传输速率
比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:
10位×240个/秒 = 2400 bps
2、传输距离与传输速率的关系
串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m(约250英尺)。
7.1.2 串行通信接口标准
一、RS-232C接口
RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
1、机械特性
RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)
2、功能特性
4、过程特性
过程特性规定了信号之间的时序关系,以便正确地接收和发送数据 。
二、RS-422A接口
三、RS-485接口
RS-485是一点对多点的通信接口,一般采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL/RS-485的电平转换。在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,上位机为普通的PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不同的站地址来实现的。
7.2 80C51的串行口
有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。
SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:
●SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。
在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。
●REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
●TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。
在方式0和方式1中,该位未用。
●RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
PCON中只有一位SMOD与串行口工作有关 :
四、波特率的计算
在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。
串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)· fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
确定T1的工作方式(编程TMOD寄存器);
计算T1的初值,装载TH1、TL1;
启动T1(编程TCON中的TR1位);
确定串行口控制(编程SCON寄存器);
串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。
以上材料引自郭天翔的51单片机教程,强烈推荐此视频,可以上网查郭天翔《十天学会单片机》。
7. 单片机中与串行有关的特殊功能的寄存器有哪些以及其主要作用
SCON 是串口功能控制寄存器,主要是设置串口的接受使能,是不是奇偶校验,工作第几状态的。
TMOD 一般也会用到,因为一般都是用T1的溢出率来作为串口的波特率的,所以计时器寄存器也有用,相应的还有TCON和T1H,T1L等
涉及到中断还有EA,ES,EA是总中断标志位,ES是串口中断标志位,都开了才会有串口的接收或发送中断。
SBUF是串口的缓存,接收就是MOV A,SBUF,发送就是MOV SBUF,A
8. 如何配置寄存器的地址
配置寄存器是一个16位的虚拟寄存器,用于指定路由器启动的次序、中断参数和设置控制台波特率等。该寄存器的值通常是以十六进制来表示的。
利用配置命令config register可以改变配置寄存器的值。
2. 启动次序
配置寄存器的最后4位,指定的是,路由器在启动的时候必须使用的启动文件所在的位置:
<>
l 0x0001指定从ROM中启动
l 0x0002-0x000F的值则参照在NVRAM配置文件中命令boot system指定的顺序
如果配置文件中没有boot system命令,路由器会试图用系统Flash存储器中的第一个文件来启动,如果失败,路由器就会试图用TFTP从网络上加载一个缺省文件名的文件(由boot域的值确定,如cisco2-4500),如果还失败,系统就从启动Flash中加载启动。
缺省的文件名是采用单词cisco、启动位的值以及路由器类型或处理器的名称构成。例如某台4500上启动字段设为3,那么缺省的启动文件名就是cisco3-4500。
以MC3819(CPU型号,大多采用MOTOROLA)路由器启动顺序为例,下面就是启动的四个阶段:
1. 系统自举
2. 启动加载(读取配置信息和启动Flash文件系统的最小功能)
3. 启动系统IOS镜像文件
4. 接口初始化/系统重启
3. 配置寄存器
3.1. 各位的含义
通过show version命令可以看到路由器配置寄存器的值,缺省情况下为0x2102。这四个数字每一个均有着重要的意义。下面从低到高进行一一的介绍。
第一个2,还原成二进制为0010,这一部分为boot field,对路由器IOS的启动起着至关重要的作用,当boot field 的值为2-15中的任何一个时,路由器属于正常启动,当此值为0时,路由器启动后会进入ROMMON模式,此值为1时,路由器进入到RXBOOT模式(2500路由器的FLASH在配置寄存器的值为2102时属性为只读,如果要升级IOS必须把寄存器的值修改为2101)
0,还原成二进制为0000,这四位中,起关键作用的是第三位(即整个寄存器里面的BIT 7),值为0,当路由器启动后会从NVRAM里面的配置文件调到RAM里运行,值为1,路由器启动后会忽略NVRAM的配置(这就是我们在进行PASSWORD RECOVERY时把寄存器的值改为2142的原因 )
1,还原成二进值为0001,我们来关注BIT8,值为0时,路由器在正常运行模式下CTRL + BREAK无效;值为1,路由器在任何运行模式下只要按下CTRL + BREAK均会立即进入ROMMON模式。
第二个2,还原成二进制为0100,其中BIT13,当值为0时,路由器如果进行网络启动会尝试无穷多次。当值为1时,路由器最多进行5次的网络启动尝试。
寄存器位数 十六进制 功能描述
0-3(启动次序) 0x0000-0x000F 启动字段:0000-停留在引导提示符下(>或rommon >下)0001-从ROM中引导,
4 - 未使用
5 - 未使用
6 0x0040 配置系统忽略NVRAM中的配置信息
7 0x0080 启动OEM位
8 0x0100 设置之后,暂停键在系统运行时无法使用;如果没有设置,系统会进入引导监控模式下(rommon>)
9 -
10 0x0400 全0的就是广播地址
11-12 0x0800到0x1800 控制台线路速度,默认的就是00即9600bps
13 0x2000 如果启动失败,系统以缺省ROM软件启动
14 0x4000 -
15 0x8000 该设置能够启用诊断消息,并忽略NVRAM的内容
典型参数
l 0x2102: 运行过程中中断键被屏蔽,路由器会查看NVRAM中配置的内容以确定启动次序,如果启动失败会采用缺省的ROM软件进行启动。
l 0x2142:恢复密码时候使用。忽略NVRAM配置信息而进入初始配置对话模式中去
3.2. 密码恢复
路由器的密码恢复是将路由器重启、中断再进入ROM监控模式,将设备设置为忽略配置文件,然后再重启,退出初始配置对话模式,配置存储器,然后读出或重新设置密码即可。
根据路由器的处理器不同,需要分两种情况进行处理。
l 适用于精简指令集计算机(RISC):
1. 关掉路由器电源,然后重新打开电源
2. 按下break键或别的键盘组合将路由器置入ROM监控模式。Break键对不同计算机或终端软件是不同的,按键的次序可能是CTRL-D,CTRL-Break等。
3. 在rommon> 提示符下,键入conf reg 0x2142以设置路由器下一次从Flash加载启动的时候不要加载NVRAM中的启动配置信息
4. 键入reset命令,路由器将重启但忽略NVRAM中的配置信息
5. 路由器运行设置对话模式。输入no或按下CTRL-C以跳过初始设置对话模式
6. 在router>提示符下输入enable以进入特权执行模式
7. 使用config memory或者 startup running命令将启动配置信息拷贝到运行配置中去。不要输入config terminal,否则将覆盖NVRAM中的配置信息
8. show running查看配置信息的内容,
9. 输入config terminal进入配置模式,根据需要改变线路密码或enable密码
10. 这时所有的接口都处于关闭状态,因此在每一个需要使用的接口上no shutdown
11. 输入config reg 0x2102命令设置路由器下次按照正常的方式启动
12. 按下CTRL-Z或End退出配置模式
13. write memory或 run start命令保存所有所作的更改
14. 重启路由器并验证密码
非RISC:
1. 关掉路由器电源,然后重新打开电源
2. 按下break键或其他键进入ROM 监控模式
3. 在>提示符下,输入o命令以记录配置寄存器的当前值(通常是0x2102或0x0102)
4. 键入o/r 0x2142设置路由器下次启动不要加载NVRAM中的配置信息
5. 键入i重启路由器
6. 以下步骤和RISC处理器相关步骤一样
4. 路由器工作模式
l ROM监控模式:路由器已启动但是没有加载任何IOS,提示符为:>或rommon>
l 启动模式:启动Flash里含有最小化IOS启动程序,提示符为:router(boot)>
l 用户执行模式:成功加载启动了一份完整的IOS代码,可以显示系统信息、执行基本的测试等。不能查看配置文件和使用debug命令
l 特权执行模式:完全访问的第二级模式。可以现实系统设置和状态信息,可以进入配置模式,可以运行debug命令
l 配置模式:在enable模式中输入config terminal命令进入配置模式。可以对接口、路由器以及线路配置进行设置
l 初始配置对话模式;启动时候,如果路由器没有进行配置(可能是因为路由器是新的或配置文件被write erase命令删除了)的话,进入系统配置对话模式。可以依次进行主机名、执行密码以及enable密码的设置;还可对网络管理接口的IP和子网掩码配置。然后保存到NVRAM中去。
9. 如何通过串口,当西门子PLC 有一个输入置位,就会给电脑发送命令
首先,西门子的串口通信直接用cpu自带的自由口就可以进行了;
其次,串口通信就是使用普通的串口通信质量,只要做一些特殊寄存器的配置,调一些收发指令就可以了,这个在开发平台的帮助里头,都有很详细的范例;
最后,要通过输入来触发通信,那就是将输入作为开始发送数据的开关就可以了,简单来说,梯形图就是这样------|输入|-------[串口发送指令]
10. 写程序+用串口的方式1,需要配置哪几个寄存器或者寄存器的哪几个位
咨询记录 · 回答于2021-11-11