关于51单片机SBUF问题 求教大神,关于51单片机SBUF的问题

\u5173\u4e8e51\u5355\u7247\u673aSBUF\u7684\u7406\u89e3

SBUF\u5b9e\u9645\u4e0a\u662f\u4e24\u4e2a\u90e8\u5206\u7ec4\u6210\u7684\uff0c\u4e00\u4e2a\u662f\u8fd9\u80fd\u8bfb\u7684\u63a5\u6536\u5b57\u8282\uff0c\u4e00\u4e2a\u76f4\u53ea\u80fd\u5199\u7684\u53d1\u5c04\u5b57\u8282\uff0c\u7531\u4e8e\u4e00\u4e2a\u53ea\u80fd\u8bfb\u4e00\u4e2a\u53ea\u80fd\u5199\uff0c\u6240\u4ee5\u5728\u4e32\u53e3\u901a\u4fe1\u65f6\u4f7f\u7528\u7684\u662f\u540c\u4e00\u4e2a\u5730\u5740\u3002\u4e32\u53e3\u901a\u4fe1\u63a5\u6536\u65f6\u5f53\u63a5\u6536\u5230\u4e00\u4e2a\u5b8c\u6574\u5b57\u8282\u65f6\u4f1a\u4ea7\u751f\u4e00\u4e2a\u63a5\u6536\u4e2d\u65ad\u6807\u5fd7\uff0c\u5373RI\u81ea\u52a8\u786c\u4ef6\u7f6e1\uff0c\u6b64\u65f6\u53ef\u4ee5\u8bfb\u51fa\u8be5\u5b57\u8282\uff0c\u8bfb\u51fa\u4e4b\u540e\u5b58\u653e\u7684\u4f4d\u7f6e\u662f\u6709\u7a0b\u5e8f\u8bbe\u8ba1\u4eba\u5458\u81ea\u5df1\u51b3\u5b9a\u7684\uff0c\u5982\u679c\u4e0d\u7ba1\u65b0\u7684\u6570\u636e\u5c06\u8986\u76d6\u65e7\u7684\u6570\u636e\uff0c\u5373\u6570\u636e\u4e22\u5931\u4e86\u3002\u53d1\u9001\u662f\uff0c\u5f53\u5411SBUF\u5199\u5165\u4e00\u4e2a\u5b57\u8282\u4e4b\u540e\uff0c\u786c\u4ef6\u5f00\u59cb\u81ea\u52a8\u53d1\u9001\uff0c\u5f538\u4f4d\u53d1\u9001\u5b8c\u6210\uff0c\u5c06\u4ea7\u751f\u4e00\u4e2a\u53d1\u5c04\u4e2d\u65ad\u6807\u5fd7\uff0c\u5373TI\u7531\u786c\u4ef6\u81ea\u52a8\u7f6e1\u3002\u4f60\u5199\u5165SBUF\u7684\u6570\u636e\u662f\u65e0\u6cd5\u91cd\u65b0\u8bfb\u51fa\u7684\uff0c\u800c\u53ea\u6709\u5f53\u53d1\u9001\u5b8c\u6210\u4e4b\u540e\u624d\u4f1a\u6709\u4e00\u4e2a\u6807\u5fd7\u4ea7\u751f\u3002

\u4e24\u4e2a\u9700\u8981\u6ce8\u610f\u7684\u95ee\u9898\u3002\u7b2c\u4e00\u70b9\uff1aHC05\u7684TXD\u63a5\u5230P3.0\uff0cRXD\u63a5\u5230P3.1,(\u6536\u63a5\u53d1\uff0c\u53d1\u63a5\u6536)\u3002\u7b2c\u4e8c\u70b9\uff1aHC05\u7684AT\u6307\u4ee4\u9700\u8981\u5728\u7ed3\u5c3e\u5904\u52a0\u4e0a[
]\uff0c\u4e5f\u662f\u5c31\u662f\u52a0\u4e0a\u56de\u8f66\u7684\u6307\u4ee4\uff0c\u6bd4\u5982[AT
]\u3002\uff08\u5927\u5c0f\u5199\u8ddf\u53cd\u659c\u6760\u90fd\u4e0d\u8981\u5f04\u6df7\uff09\u3002\u6210\u529f\u8bf7\u91c7\u7eb3

SBUF是单片机硬件的串口接收、发送缓存器,软件往SBUF写入数据后,会自动触发单片机硬件的数据发送,发送完毕后硬件将TI 置1,软件等到TI为1后将其清0,并进行下次发送,即再次写入SBUF。
接收数据时,硬件将接收到的数据放入SBUF,并置为SI标志位,软件可使用中断触发或轮询机制发现SI的变化,将数据从SBUF读出,存入设计的目标存储单元。
具体可参考单片机串口部分的手册。

上面的应该是发送程序,SBUF只能发送或接受一个字节,也用不到FOR循环,接受的时候最好有一个判断字节长度的变量,比如定义一个Rxd_Number,具体程序可参考下面
void UsartData(void) interrupt 4 using 2
{
ES = 0; //关串口中断
if(RI)
{
RI = 0;
if(Rxd_Count < Rxd_Number)
{
receive_data[i] = SBUF;
Rxd_Count ++;
}
}
ES = 1;

}

  • 51鍗曠墖鏈涓袱涓 SBUF鐗╃悊涓婄嫭绔,鍏卞悓鍗犵敤鍚屼竴鍦板潃,閭d箞涓涓崟鐗囨満鑳戒笉...
    绛旓細1銆侀鍏堬紝51鎸囦护鎵ц灞炰簬鏄緷娆℃墽琛岀殑锛岃鍐欎笉浼氬悓姝ワ紝鎵ц璇荤殑鏃跺欎笉浼氭槸鍐欙紝鎵ц鍐欑殑鏃跺欎笉浼氭槸璇伙紱2銆佷覆鍙e弻宸ユ槸鎸囪鍐欓兘鏄彲浠ラ氳繃璇ュ彛瀹炵幇锛屼絾鏄紝51鐨勮鍐欎覆鍙f槸瑕佸涓插彛杩涜瀹氬悜鐨勶紝杩欎篃鍐冲畾涓插彛涓嶄細鏄湡姝f剰涔変笂鐨勫悓鏃躲備笉杩囷紝鍙互閫氳繃绋嬪簭璁捐锛屽疄鐜颁竴涓覆鍙g殑璇诲啓鑷姩鍖栵紝甯屾湜鍙互甯埌浣...
  • 51鍗曠墖鏈姹囩紪绋嬪簭,MOV SBUF, ACC 銆傚綋ACC 涓 11000000B ,7娈垫暟 ...
    绛旓細浣犱粩缁嗘煡鐪嬫墜鍐sbuf搴旇鏄厛鍙戦侀珮浣嶏紝杩欐牱鍙戝嚭鍘诲悗灏卞弽杩囨潵浜嗭紝瑙e喅鍔炴硶鏄皢绋嬪簭鍙嶈繃鏉ュ啀鍙戦侊紝鏈绠鍗曠殑鏄皢瑕佸彂閫佺殑鍊间繚瀛樺埌浣嶅鍧鍖猴紝鍦ㄤ粠浣嶅鎵惧尯鍚堝苟鍥炴潵鍙戦
  • 51鍗曠墖鏈涓殑SBUF涓娆″彧鑳藉瓨鏀8浣嶅悧,鎴戞兂鍦ㄦ暟鐮佺涓婃樉绀0~65535涔嬮棿鐨...
    绛旓細涓插彛閫氫俊锛屾瘡娆″氨鏄竴涓瓧鑺傘傛鏁帮紝涔熸病鏈夐檺鍒讹紝鎯宠浼犻佸灏戝氨浼犻佸灏戞銆傛兂瑕佷紶閫佸澶х殑鏁板瓧锛岄兘娌℃湁鍏崇郴銆傚緢绠鍗曠殑銆
  • 51鍗曠墖鏈涓80C51涓插彛鐨SBUF(瀛樺闈㈣緭鍏ョ殑鏁版嵁鐨凷BUF)涓殑鏁版嵁鎬庝箞鏍锋墠浼...
    绛旓細濡傛灉鏄鍗曠墖鏈涓插彛鎺ユ敹锛屽綋鎺ユ敹鍒版暟鎹箣鍚庯紝纭欢浼氳嚜鍔ㄥ皢鏁版嵁瀛樺叆SBUF锛岀劧鍚庣疆浣峈I锛岃〃绀烘湁鏁版嵁鎺ユ敹 濡傛灉鏄彂閫侊紝浣犳妸鏁版嵁鍐欏叆SBUF锛岀‖浠朵細鑷姩鍙戦侊紝瀹屾垚鍚庯紝缃綅TI锛岃〃绀哄彂閫佸畬鎴
  • 51鍗曠墖鏈鐨SBUF鏄瓨鍌ㄤ竴浣嶆暟鎹彂閫佷竴浣嶅悧
    绛旓細鏄殑51鍗曠墖鏈鏈21涓瘎瀛樺櫒銆傝繖21涓瘎瀛樺櫒涓嶈繛缁湴鍒嗗竷鍦128涓瓧鑺傜殑SFR瀛樺偍绌洪棿涓傚湴鍧绌洪棿涓80H-FFH锛屽湪杩欑墖SER绌洪棿閲岄潰锛屽寘鍚湁128涓綅鍦板潃绌洪棿锛屽湴鎵篃鏄80H-FFH,浣嗗彧鏈83涓湁鏁堜技鍦板潃锛屽彲瀵11涓壒娈婂姛鑳藉瘎瀛樺櫒鐨勬煇浜涗綅浣滀綅瀵诲潃鎿嶄綔銆
  • 鍏充簬51鍗曠墖鏈篠BUF鐨勭悊瑙
    绛旓細SBUF瀹為檯涓婃槸涓や釜閮ㄥ垎缁勬垚鐨勶紝涓涓槸杩欒兘璇荤殑鎺ユ敹瀛楄妭锛屼竴涓洿鍙兘鍐欑殑鍙戝皠瀛楄妭锛岀敱浜庝竴涓彧鑳借涓涓彧鑳藉啓锛屾墍浠ュ湪涓插彛閫氫俊鏃朵娇鐢ㄧ殑鏄悓涓涓湴鍧銆備覆鍙i氫俊鎺ユ敹鏃跺綋鎺ユ敹鍒颁竴涓畬鏁村瓧鑺傛椂浼氫骇鐢熶竴涓帴鏀朵腑鏂爣蹇楋紝鍗砇I鑷姩纭欢缃1锛屾鏃跺彲浠ヨ鍑鸿瀛楄妭锛岃鍑轰箣鍚庡瓨鏀剧殑浣嶇疆鏄湁绋嬪簭璁捐浜哄憳鑷繁鍐冲畾鐨勶紝...
  • 51鍗曠墖鏈鎵ц瀹屼覆鍙e彂閫佹寚浠SBUF=Data; CPU鏄笉鏄竴鐩村湪鍙戦佹暟鎹綅...
    绛旓細棣栧厛浣犵殑Data绫诲瀷鏈闂锛屽鏋滄槸int鍨嬫暟鎹紝搴旇鍒嗛珮銆佷綆瀛楄妭鍙戦侊紙Data/256鍜孌ata%256锛夈倃hile鎸囦护鏄窡鐫涓婁竴鏉$珛鍗虫墽琛岀殑锛屽彂閫佸畬TI浼氱疆1锛岃烦鍑簑hile寰涓嬫墽琛屻備綘琛ュ厖璇寸殑鍚庝竴绉嶆槸瀵圭殑锛孋PU鍙槸鍦ㄧ瓑鐫TI缃綅锛屾暟鎹彂閫佺敱纭欢瀹屾垚銆
  • 51鍗曠墖鏈涓插彛鎺ユ敹闂,璇烽棶绗竴涓SBUF=0X01鏄粈涔堟剰鎬?鎴戝彧鎯宠浼犳劅...
    绛旓細褰撲綘鎸夐敭鎸変笅鏃讹紝浼氬彂閫0x01杩欎釜鏁帮紒
  • 51鍗曠墖鏈鐨SBUF鐨勫叿浣撲綔鐢,璇︾粏鐐
    绛旓細SBUF鍏跺疄鏄湁涓や釜锛屽彧鏄悕瀛椾竴鏍疯屽凡锛屼竴涓槸鍙褰撲綔鎺ユ敹缂撳啿SBUF锛屼竴涓槸鍙啓褰撲綔鍙戦佺紦鍐睸BUF锛屾敹鍒版暟鎹氨鎶婃暟鎹斁鍒版帴鏀剁紦鍐睸BUF锛岃涓娆″悗鑷姩娓呴櫎鎺ユ敹缂撳啿SBUF锛屽彂閫佹暟鎹氨鎶婃暟鎹斁鍒板彂閫佺紦鍐睸BUF锛屽彂閫佸畬鑷姩娓呴櫎鍙戦佺紦鍐睸BUF
  • 51鍗曠墖鏈涓插彛閫氫俊濡備綍鎶SBUF鏀跺埌鐨凙SCII鐮佽浆鎹负瀛楃?
    绛旓細鎺ユ敹鏃跺姞涓浆鐮佸鐞嗐傚亣璁句綘涓婁綅鏈哄彂閫佺殑鏄枃鏈牸寮忕殑鍗佸叚杩涘埗鏁版嵁锛岄偅涔堜笅浣嶆満澶勭悊闇瑕侊細瀛楃澶勭悊锛宼emp = SBUF; if ((temp>='0')&&(temp<='9')) temp -= '0'; else if ((temp>='A')&&(temp<='F')) temp = temp - 'A' + 10; else if ((temp>='a')&&(temp<='f')) ...
  • 扩展阅读:单片机c51毕业设计题目 ... 51单片机期末试题及答案 ... 51单片机编程入门自学 ... 51单片机编程100例 ... 51单片机课程设计题目 ... 51单片机8个流水灯编程 ... 51单片机入门自学书籍 ... 51单片机精确延时1秒 ... 51单片机入门自学郭天祥 ...

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