纯软件实现单片机远程通信
以中断方式工作的接收(1 帧)的中断服务源程序见程序清单):
以上指令共46个机器周期(T),加上中断响应平均延时5个机器周期,所以程序执行到此,即A机发送起始位(开始变低)到此已经历51T。由于MCS-51指令的1个机器周期(T)相当于12个时钟周期,所以当用12MHz的晶振时,1个机器周期(1T)相当于是1μs。51T相当于51μs。
从A机发出超始位到此共延时51T+4T+88T=143T,相当于143μs。
传输率为9600bps时,每位费时104μs(即1s/9600)。从起始位开始到D0 位中间1.5位,费时1.5×104μs=156μs。下面程序在 156μs及其前后各11μs处对D0位进行共3次采样,记录D0采样结果为0次数。如果3次采样结果为0的次数小于等于1,则判断D0=1。如果3次采样结果为0的次数大于等于2,则判断D0=0。这样极大地增强了串行通信的可靠性。然后再经过延时后对其他各位数据进行同样的三次采样,直到D0~D7共 8位数据全部采样结束。
以上程序执行用去40T,加上前面的143T,共花去183μs。每次返回NEXT3循环一次,读入一位数据。在程序输入NEXT3前,给R0赋值02H,就能保证以后各位数据位3次采样的准确时刻。此中断服务子程序段不仅能实现在每位数据采样,而且还在中间时刻前后11μs各采样1次。以3次数据的多数结果确定该位的值,可大大降低因干扰出错的概率,因此在干扰严重的远程通信中有很强的适应性。
结语
本文介绍的GMS97C2051单片机远程通信的纯软件方法和程序也适合于ATMEL公司的AT89C2051单片机,对其他单片机的远程通信也具有一定的参考价值。文中提供的软件接口方法和源程序经实际应用表明,该方法可延长通信距离至 1200米(9600bps时)。本方法的不足之处在于软件编程要求比较高,如果要实现即软件编程简单、又通用性好的单片机远程通信,还是要使用RS- 232/RS-485/RS-422转换器或光隔远程收发器。
- 基于FPGA的通信系统基带验证平台的设计(06-11)
- 基于DSP的空间光通信APT运动控制箱设计(10-11)
- 嵌入式语音通信系统中VxWorks BSP的设计实现(09-18)
- DSP在通信中的应用(10-12)
- 利用数字信号控制器实现稳健的PLC通信(05-02)
- 短波通信中一种时延设计方法与DSP实现(05-02)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...