楼主可以搜一搜,
* CSMA/CD(carrier sensemultiple access with collision detection)带冲突检测的载波侦听多路访问协议:
* 1.系统中设置定时器作为延时计时器,他有两组延时参数。一组用于侦听网络是否空闲,一组用于数据碰撞冲突延时等待。
* 2.每次接收中断时,设置网络忙标志,并给定时器重装延时参数,该参数的值应保证只要有节点发送数据,定时器就不会溢出。
* 若所有节点停止发送数据,定时器将溢出进入中断,并停止计时及清除网络忙标志,表示网络空闲。
* 3.发送任务函数若有发送任务,将在网络空闲时启动发送,发送数据时自身接收中断将进行数据碰撞冲突判断。
* 发送任务函数每发送1Byte数据时,将该数据存入一个临时变量中,发送这一数据的同时,自身接收程序也会接收到这一数据。
* 将接收到的数据与临时变量中的数据进行比较,若相等,表示数据发送成功,否则,表示发生冲突。
* 4.若检测到数据碰撞冲突,将立即停止发送,并给定时器设置一个随机延时值,延时结束若网络空闲将重新启动发送。
|