单片机串行口是如何启动一帧数据的发送的 各位大神,单片机串行口是发送完一帧数据才进入中断还是发送一位...

\u5355\u7247\u673a\u4e32\u884c\u53e3\u53d1\u9001\u591a\u4f4d\u6570\u636e\u7a0b\u5e8f

\u60f3\u8981\u53d1\u9001\u591a\u6b21\uff0c\u6765\u4f20\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u5c31\u5fc5\u987b\u81ea\u5df1\u5236\u5b9a\u534f\u8bae\u3002
\u4e00\u4e2a\u7b80\u5355\u7684\u65b9\u6cd5\u662f\uff1a
\u628a\u201c\u4e24\u4e2a\u516b\u4f4d\u4e8c\u8fdb\u5236\u6570\u201d\u5148\u62c6\u6210\u201c\u56db\u4e2a\u56db\u4f4d\u4e8c\u8fdb\u5236\u6570\u201d\uff0c\u5206\u6210\u56db\u6b21\u8fdb\u884c\u4f20\u9001\u3002
\u6bcf\u6b21\u4f20\u9001\uff0c\u7528\u4f4e\u56db\u4f4d\u6765\u8868\u793a\u201c\u4e00\u4e2a\u56db\u4f4d\u4e8c\u8fdb\u5236\u6570\u201d\uff0c\u7528\u9ad8\u56db\u4f4d\u6765\u8868\u793a\u201c\u7b2c\u51e0\u4e2a\u201d\u3002

\u63a5\u6536\u65b9\u518d\u6839\u636e\u9ad8\u56db\u4f4d\u7684\u4fe1\u606f\uff0c\u628a\u4f4e\u56db\u4f4d\u62fc\u51d1\u6210\u201c\u4e24\u4e2a\u516b\u4f4d\u4e8c\u8fdb\u5236\u6570\u201d\u3002

\u8fd9\u79cd\u65b9\u6cd5\uff0c\u6700\u5927\u53ef\u4ee5\u4f20\u900164\u4f4d\u6570\u7684\u6570\u636e\uff0c\u5373\u4e00\u4e2a\u201c\u516b\u4e2a\u516b\u4f4d\u4e8c\u8fdb\u5236\u6570\u201d\u3002

\u5355\u7247\u673a\u4e32\u884c\u53e3\u662f\u53d1\u9001\u5b8c\u4e00\u5e27\u6570\u636e\u624d\u8fdb\u5165\u4e2d\u65ad\u7684\uff0c\u5c31\u662f\u4e00\u4e2a\u5b57\u8282\u3002\u53ea\u8981\u5f00\u4e2d\u65ad\uff0c\u4e32\u53e3\u4f1a\u81ea\u52a8\u8fdb\u5165\u4e2d\u65ad\u7684\uff0c\u8fd9\u4e2a\u4f60\u5fc5\u64cd\u5fc3\u3002
\u5b9a\u65f6\u5668T1\u53ea\u662f\u63a7\u5236\u6ce2\u7279\u7387\u7684\uff0c\u4e0d\u5b58\u5728\u8fd8\u63a7\u5236\u4e2d\u65ad\u7684\u65f6\u95f4\u7684\u3002

你要发送的数据是放在一个数组中的 这个数组你可以随意定义 这个数组的长度根据你发送一帧数据的字节数来确定 有两种方式可以启动 这一帧数据的发送1::你可以给SBUF=sendBuf【0】;这个sendBuf 为你你要发送的数据所在的数组 只要给发送SBUF 赋值这一帧数据就开始发送;2:你可以通过判断TI IF(!TI) TI=1; 通过置TI=1 请求串口发送中断 最好用第二种方式启动发送 因为你发送数据速度是与波特率有关 只有放在 中断里最容易不丢失帧

先设置好通讯的必要参数,例如波特率、模式、停止位,然后设置计数器和地址指针,最后用地址指针取发送数据传送到串口发送寄存器即可

51单片机串行口是独立的硬件,对其设置完之后,它就独立工作了。
如果REN=1,它会自动检测RXD,当它收齐了一帧数据,就自动将数据放到(接收)SBUF,然后在RI置一。

CPU的中断系统,如果已经开放了串口中断,CPU就会自动转到0023H去执行程序。

上述过程,都是硬件自动进行的,不需要我们编写程序来控制。


  • 鍗曠墖鏈轰覆琛屽彛鏄浣曞惎鍔ㄤ竴甯ф暟鎹鐨勫彂閫佺殑
    绛旓細浣犺鍙戦佺殑鏁版嵁鏄斁鍦ㄤ竴涓暟缁勪腑鐨 杩欎釜鏁扮粍浣犲彲浠ラ殢鎰忓畾涔 杩欎釜鏁扮粍鐨勯暱搴︽牴鎹綘鍙戦佷竴甯ф暟鎹殑瀛楄妭鏁版潵纭畾 鏈変袱绉嶆柟寮忓彲浠ュ惎鍔 杩欎竴甯ф暟鎹殑鍙戦1:锛氫綘鍙互缁橲BUF=sendBuf銆0銆戯紱杩欎釜sendBuf 涓轰綘浣犺鍙戦佺殑鏁版嵁鎵鍦ㄧ殑鏁扮粍 鍙缁欏彂閫丼BUF 璧嬪艰繖涓甯ф暟鎹氨寮濮嬪彂閫侊紱2锛氫綘鍙互閫氳繃鍒ゆ柇TI IF(...
  • 璋佽兘甯垜鍥炵瓟涓涓叧浜51鍗曠墖鏈鐨勯棶棰: 绠杩涓茶鍙鎺ユ敹鍜屽彂閫鏁版嵁鐨勮繃...
    绛旓細褰撳悜SBUF鍙戝啓鍛戒护鏃,鍗冲悜缂撳啿鏈烻BUF瑁呰浇骞跺紑濮婽XD寮曡剼鍚戝鍙戦涓甯ф暟鎹锛屽彂閫佸畬渚垮彂閫佷腑鏂爣蹇桾1=1,鍦ㄦ弧瓒涓茶鍙鎺ユ敹涓柇鏍囧織浣峈1=0鐨勬潯浠朵笅锛岀疆鍏佽鎺ユ敹浣峈EN=1灏变細鎺ユ敹涓甯ф暟鎹繘琛岀Щ浣嶅瘎瀛樺櫒锛屽苟瑁呰浇鍜屾帴鏀跺埌SBUF涓紝
  • 绠杩鍗曠墖鏈轰覆琛屽彛鐨勫伐浣滄柟寮
    绛旓細1銆佹柟寮0鏄悓姝ョЩ浣嶅瘎瀛樺櫒鏂瑰紡锛屽抚鏍煎紡8浣嶏紝娉㈢壒鐜囧浐瀹氫负fosc/12銆2銆佹柟寮1鏄8浣嶅紓姝ラ氫俊鏂瑰紡锛屽抚鏍煎紡10浣嶏紝娉㈢壒鐜囧彲鍙橈細T婧㈠嚭鐜/n(n= :32鎴16)銆3銆佹柟寮2鏄9浣嶅紓姝ラ氫俊鏂瑰紡锛屽抚鏍煎紡11浣嶏紝娉㈢壒鐜囧浐瀹氾細 fosc/n(n=32 鎴16)銆4銆佹柟寮3鏄9浣嶅紓姝ラ氫俊鏂瑰紡锛屽抚鏍煎紡11浣嶏紝娉㈢壒鐜囧彲鍙橈細T婧㈠嚭鐜(m=...
  • 51鍗曠墖鏈鐨涓茶鍙鏈夊嚑绉嶅伐浣滄柟寮?瀹冧滑鐨甯鏍煎紡鏄浣瑙勫畾鐨?
    绛旓細锛3锛夋柟寮2锛涓茶鍙涓11浣嶅紓姝ラ氫俊鎺ュ彛銆傚彂閫佹垨鎺ユ敹涓甯淇℃伅鍖呮嫭1浣嶈捣濮嬩綅鈥0鈥濄8浣鏁版嵁浣嶃1浣嶅彲缂栫▼浣嶃1浣嶅仠姝綅鈥1鈥濄傚彂閫佹暟鎹細鍙戦佸墠锛屽厛鏍规嵁閫氫俊鍗忚鐢辫蒋浠惰缃甌B8涓衡滃鍋舵牎楠屼綅鈥濇垨鈥滄暟鎹爣璇嗕綅鈥濓紝鐒跺悗灏嗚鍙戦佺殑鏁版嵁鍐欏叆SBUF锛屽嵆鑳鍚姩鍙戦佸櫒銆傚彂閫佽繃绋嬫槸鐢辨墽琛屼换浣曚竴鏉′互SBUF涓虹洰鐨...
  • 鍗曠墖鏈鐨涓茶鎺ュ彛鏄浠涔?
    绛旓細涓茶鎺ュ彛浠ユ柟寮1鍙戦佹椂锛屾暟鎹敱TXD绔緭鍑恒CPU鎵ц涓鏉℃暟鎹啓鍏ュ彂閫佺紦鍐 鍣⊿BUF鐨勬寚浠わ紙渚嬪锛孧OVSBUF锛孉锛夛紝鏁版嵁瀛楄妭鍐欏叆SBUF鍚庯紝渚垮惎鍔ㄤ覆琛屽彛鍙戦佸櫒鍙戦锛屽彂閫佸畬涓甯т俊鎭紝缃1鏀鹃佷腑鏂爣蹇桾I銆傦紙2锛夋柟寮1杈撳叆 涓茶鍙d互鏂瑰紡1鎺ユ敹鏃讹紝鏁版嵁浠嶳XD绔緭鍏ャ傚湪REN缃1浠ュ悗锛屽氨鍏佽鎺ユ敹鍣ㄦ帴鏀躲傛帴鏀跺櫒浠ユ墍寤虹珛...
  • 鍗曠墖鏈烘庝箞閫氳繃涓插彛鍙戦佷竴涓鏁版嵁?
    绛旓細鍗曠墖鏈(Microcontrollers)鏄竴绉嶉泦鎴愮數璺姱鐗,鏄噰鐢ㄨ秴澶ц妯¢泦鎴愮數璺妧鏈妸鍏锋湁鏁版嵁澶勭悊鑳藉姏鐨勪腑澶鐞嗗櫒CPU銆侀殢鏈哄瓨鍌ㄥ櫒RAM銆佸彧璇诲瓨鍌ㄥ櫒ROM銆佸绉岻/O鍙e拰涓柇绯荤粺銆佸畾鏃跺櫒/璁℃暟鍣ㄧ瓑鍔熻兘(鍙兘杩樺寘鎷樉绀洪┍鍔ㄧ數璺佽剦瀹借皟鍒剁數璺佹ā鎷熷璺浆鎹㈠櫒銆丄/D杞崲鍣ㄧ瓑鐢佃矾)闆嗘垚鍒颁竴鍧楃鐗囦笂鏋勬垚鐨勪竴涓皬鑰屽畬鍠勭殑寰瀷璁$畻鏈虹郴缁,...
  • mcs51鍗曠墖鏈轰覆琛屽彛鍙戦鏁版嵁鐨勬搴
    绛旓細mcs51鍗曠墖鏈轰覆琛屽彛鍙戦佹暟鎹殑娆″簭鏄細1銆佸緟鍙戦佹暟鎹丼BUF銆2銆佺粡TXD(P3.1)涓茶鍙戦涓甯ф暟鎹瀹屾瘯銆3銆佺‖浠惰嚜鍔ㄥ皢SCON鐨凾I缃1銆4銆佺敤杞欢灏員I娓0銆
  • 51鍗曠墖鏈鐨涓茶閫氫俊鏄庝箞宸ヤ綔鐨??
    绛旓細鍦ㄥ彂閫佺Щ浣嶆椂閽(鐢辨尝鐗圭巼纭畾)鐨勫悓姝ヤ笅锛屼粠TxD鍏堥佸嚭璧峰浣嶏紝鐒跺悗鏄8浣嶆暟鎹綅锛屾渶鍚庢槸鍋滄浣嶃傝繖鏍风殑涓甯10浣嶆暟鎹彂閫佸畬鍚庯紝涓柇鏍囧織TI缃綅銆傚湪鍏佽鎺ユ敹鐨勬潯浠朵笅(REN锛1)锛屽綋RXD鍑虹幇鐢1鍒癘鐨勮礋璺冲彉鏃讹紝鍗宠褰撴垚鏄涓茶鍙戦佹潵鐨涓甯ф暟鎹鐨勮捣濮嬩綅锛屼粠鑰鍚姩涓娆℃帴鏀惰繃绋嬨傚綋8浣嶆暟鎹帴鏀跺畬锛屽苟妫娴嬪埌...
  • 51鍗曠墖鏈鐨涓插彛鎺ユ敹涓甯ф暟鎹鏈夊嚑浣?
    绛旓細鍏堣鍗曠墖鏈轰覆鍙鐨勫伐浣滄柟寮:鍗曠墖鏈轰覆鍙g殑宸ヤ綔鏂瑰紡鍏4绉,鏂瑰紡0--鏂瑰紡3.鏂瑰紡0:鐢ㄧЩ浣嶈剦鍐层俁XD鍋氳緭鍏/杈撳嚭,TXD杩涜绉讳綅銆傛敹鍙戠殑鏁版嵁涓哄叓浣嶃傛柟寮1:浼犻涓甯淇℃伅涓10浣,鍗1浣嶈捣濮嬩綅(0),8浣嶆暟鎹綅(浣庝綅鍦ㄥ厛)鍜1浣嶅仠姝綅(1)銆傛暟鎹綅鐢盩XD鍙戦,鐢盧XD鎺ユ敹鏂瑰紡1:涓甯т俊鎭篃鏄10浣;鍗 1浣嶈捣濮嬩綅,8浣嶆暟鎹綅(鍏...
  • 涓茶鍙閫氫俊(涓)
    绛旓細涓茶鍙涓10浣嶉氱敤寮傛鎺ュ彛銆傚彂閫佹垨鎺ユ敹涓甯ф暟鎹淇℃伅涓10浣嶏紝鍖呮嫭1浣嶈捣濮嬩綅鈥0鈥濄8浣嶆暟鎹綅銆1浣嶅仠姝綅鈥1鈥濄傚彂閫佹暟鎹細鏁版嵁浠嶵XD绔彛杈撳嚭锛屽綋鏁版嵁鍐欏叆鍙戦佺紦鍐插櫒SBUF鏃讹紝灏鍚姩鍙戦佸櫒鍙戦併傚彂閫佸畬涓甯ф暟鎹悗锛岀疆涓柇鏍囧織TI=1锛岀敵璇蜂腑鏂紝閫氱煡CPU鍙互鍙戦佷笅涓涓暟鎹簡銆傛帴鏀舵暟鎹細棣栧厛浣縍EN=1锛堝厑璁...
  • 扩展阅读:51单片机串行口程序 ... 串行口的结构 ... 串行口的控制寄存器为 ... 单片机输出信号为 电平 ... 51单片机检测不到串口 ... 51单片机的中断 ... 51单片机双机通信实验 ... 单片机串行口帧格式 ... 串行口是单片机的外部资源 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网