日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機與串口通信的源代碼詳細概述

Wildesbeast ? 來源:單片機教程網(wǎng) ? 作者:單片機教程網(wǎng) ? 2020-06-13 11:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 發(fā)送:向總線上發(fā)命令

2. 接收:從總線接收命令,并分析是地址還是數(shù)據(jù)。

3. 定時發(fā)送:從內(nèi)存中取數(shù)并向主機發(fā)送。

經(jīng)過調(diào)試,以上功能基本實現(xiàn),目前可以通過上位機單片機進行實時控制。

程序如下:

//這是一個單片機C51串口接收(中斷)和發(fā)送例程,可以用來測試51單片機的中斷接收

//和查詢發(fā)送,另外我覺得發(fā)送沒有必要用中斷,因為程序的開銷是一樣的

#i nclude 《reg51.h》

#i nclude《stdio.h》

#i nclude 《string.h》

#define INBUF_LEN 4 //數(shù)據(jù)長度

unsigned char inbuf1[INBUF_LEN];

unsigned char checksum,count3 , flag,temp,ch;

bit read_flag=0;

sbit cp=P1^1;

sbit DIR=P1^2;

int i;

unsigned int xdata *RAMDATA; /*定義RAM地址指針*/

unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ;

void init_serialcomm(void)

{

SCON=0x50; //在11.0592MHz下,設(shè)置串行口波特率為9600,方式1,并允許接收

PCON=0x00;

ES=1;

TMOD=0x21; //定時器工作于方式2,自動裝載方式

TH0=(65536-1000)%256;

TL0=(65536-1000)/256;

TL1=0xfd;

TH1=0xfd;

ET0=1;

TR0=1;

TR1=1;

// TI=0;

EA=1;

// TI=1;

RAMDATA=0x1F45;

}

void serial () interrupt 4 using 3

{

if(RI)

{ RI=0;

ch=SBUF;

TI=1; //置SBUF空

switch(ch)

{

case 0x01 :printf(“A”); TI=0;break;

case 0x02 :printf(“B”); TI=0;break;

case 0x03 :printf(“C”); TI=0;break;

case 0x04 :printf(“D”); TI=0;break;

default :printf(“fg”); TI=0;break;

}

}

}

//向串口發(fā)送一個字符

void timer0() interrupt 1 using 3{

// char i;

flag++;

TH0=0x00;

TL0=0x00;

if(flag==10)

{// cp=!cp;

// for(i=0;i《6;i++)

P2=0x25;

TI=1;

temp=*RAMDATA;

printf(“%c”,temp);

TI=0;

// RAMDATA--;

flag=0;

}

}

//主程序

main()

{

init_serialcomm(); //初始化串口

//向6264中送數(shù)據(jù)

{

*RAMDATA=0x33;

}

while(1)

{

*RAMDATA=0x33;;

}

}

調(diào)試過程中遇到的問題:

1. 發(fā)送過程:在發(fā)送時必須保證TI=1:即發(fā)送緩沖器為空,否則將導致數(shù)據(jù)發(fā)不出去,如果想強制發(fā)送可以用:TI=1.具體發(fā)送數(shù)據(jù):利用printf(“akjdfaklfj”);函數(shù)直接發(fā)送即可。

2. 接收過程:在接收時多選用中斷方式,這樣可以節(jié)約CPU的時間,提高效率,

1 Windows API通信函數(shù)方法

與通信有關(guān)的Windows API函數(shù)共有26個,但主要有關(guān)的有:

CreateFile() 用 “comn”(n為串口號)作為文件名就可以打開串口。

ReadFile() 讀串口。

WriteFile() 寫串口。

CloseHandle() 關(guān)閉串口句柄。

初始化時應注意CreateFile()函數(shù)中串口共享方式應設(shè)為0,串口為不可共享設(shè)備,其它與一般文件讀寫類似。以下給出API實

現(xiàn)的源代碼。

1.1 發(fā)送的例程

//聲明全局變量

HANDLE m_hIDComDev;

OVERLAPPED m_OverlappedRead, m_Over lappedWrite;

//初始化串口

void CSerialAPIView::OnInitialUpdate()

{

CView::OnInitialUpdate();

Char szComParams[50];

DCB dcb;

Memset(&m_OverlappedRead, 0, sizeof (OVERLAPPED));

Memset(&m_OverlappedWrite, 0, sizeof (OVERLAPPED));

m_hIDComDev = NULL;

m_hIDComDev = CreateFile(“COM2”, GENERIC_READ│GENERIC_WRITE, 0, NULL,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL│FILE_FLAG_OVERLAPPED, NULL);

if (m_hIDComDev == NULL)

{

AfxMessageBox(“Can not open serial port!”);

goto endd;

}

memset(&m_OverlappedRead, 0, sizeof (OVERLAPPED));

memset(&m_OverlappedWrite, 0, sizeof (OVERLAPPED));

COMMTIMEOUTS CommTimeOuts;

CommTimeOuts.ReadIntervalTimeout=0×FFFFFFFF;

CommTimeOuts.ReadTotalTimeoutMultiplier = 0;

CommTimeOuts.ReadTotalTimeoutConstant = 0;

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

CommTimeOuts.WriteTotalTimeoutConstant = 5000;

SetCommTimeouts(m_hIDComDev, &CommTimeOuts);

Wsprintf(szComparams, “COM2:9600, n, 8, 1”);

m_OverlappedRead. hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

m_OverlappedWrite. hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

dcb. DCBlength = sizeof(DCB);

GetCommState(m_hIDComDev, &dcb);

dcb. BaudRate = 9600;

dcb. ByteSize= 8;

unsigned char ucSet;

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3247

    瀏覽量

    76549
  • 51單片機
    +關(guān)注

    關(guān)注

    278

    文章

    5716

    瀏覽量

    135326
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1667

    瀏覽量

    58217
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    入門神器 | 尚硅谷51單片機視頻教程

    。尚硅谷 51 單片機教程強調(diào)的是“軟硬結(jié)合”的工程思維。程序員不僅要會寫 C 語言代碼,還需要看懂電路原理圖,理解電容、電阻、晶體管在電路中的穩(wěn)壓、濾波與開關(guān)作用。 這種跨學科的視野,使得程序員在面對
    發(fā)表于 05-01 17:34

    8XC51FX:高性能8位單片機的全方位解析

    8XC51FX:高性能8位單片機的全方位解析 在單片機的世界里,8XC51FX系列以其卓越的性能和豐富的功能脫穎而出,成為眾多電子工程師在設(shè)計項目時的熱門選擇。今天,我們就來深入探討一
    的頭像 發(fā)表于 03-29 13:15 ?402次閱讀

    51單片機驅(qū)動HMI串口屏,串口屏的下載方式

    串口串口屏是一個集成了單片機的屏幕模塊,采用的是TTL串口協(xié)議,可以直接通過對應指令控制屏幕, 本文采用的串口屏是T0系列的基本型,目的
    的頭像 發(fā)表于 03-17 11:44 ?384次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>驅(qū)動HMI<b class='flag-5'>串口</b>屏,<b class='flag-5'>串口</b>屏的下載方式

    智能顯示模塊串口單片機連接通信成功,偶爾收到的命令是亂碼有哪些什么原因?

    智能顯示模塊串口單片機連接通信成功,偶爾收到的命令是亂碼有哪些什么原因?
    發(fā)表于 03-17 11:28

    學習單片機快速方法

    的很不錯了。告訴大家我學51單片機只用了兩個星期。普通的應用差不多都會了,可以自己設(shè)計一個國旗升降系統(tǒng)、溫度自動控制系統(tǒng)之類的電路和程序。當然想要這么短的時間內(nèi)精通是不可能的。 學習單片機是有捷徑可走
    發(fā)表于 01-14 07:42

    MCU單片機串口數(shù)據(jù)記錄儀方案

    在工業(yè)控制、環(huán)境監(jiān)測、物流追蹤等眾多領(lǐng)域,如何可靠、便捷地記錄設(shè)備串口數(shù)據(jù)成為不少工程師關(guān)注的焦點?;贛CU單片機串口數(shù)據(jù)記錄儀方案,正以其高效集成、靈活存儲和簡便操作的特點,成為數(shù)據(jù)采集與記錄場景中的理想選擇。
    的頭像 發(fā)表于 11-27 15:02 ?572次閱讀

    C語言和單片機C語言有什么差異

    區(qū)別是由編譯器決的,只能參考對應的編譯手冊,即使同種平臺不同的編譯器對C的擴展也有不同。 3、單片機c語言編程是基于C語言的單片機編程。單片機的C語言采用C51編譯器(簡稱C
    發(fā)表于 11-14 07:55

    32位單片機PY32F003的特性概述

    邏輯、數(shù)據(jù)采集和通信應用來說是足夠的。定位非常明確,可以作為一些8位/32位單片機的直接替代和競爭產(chǎn)品。
    的頭像 發(fā)表于 11-07 16:02 ?1538次閱讀
    32位<b class='flag-5'>單片機</b>PY32F003的特性<b class='flag-5'>概述</b>

    51單片機RS485編程實例資料

    詳細介紹51單片機RS485通信接線和編程代碼
    發(fā)表于 10-20 14:57 ?6次下載

    單片機燒錄原理是怎樣的?輝芒微單片機燒錄程序詳細步驟講解

    燒錄(Programming)就是把 .hex/.bin 文件里的機器碼搬運進單片機片內(nèi) Flash 的過程。輝芒微(FMD)單片機內(nèi)部有一塊 自舉 BootROM,上電時會先跑這段程序;如果檢測
    的頭像 發(fā)表于 09-17 16:14 ?3310次閱讀
    <b class='flag-5'>單片機</b>燒錄原理是怎樣的?輝芒微<b class='flag-5'>單片機</b>燒錄程序<b class='flag-5'>詳細</b>步驟講解

    單片機怎么燒程序

    單片機燒程序是將編寫好的程序代碼寫入單片機內(nèi)部存儲單元,讓單片機按照預設(shè)邏輯工作的過程,是單片機應用開發(fā)中不可或缺的環(huán)節(jié)。無論是簡單的燈光控
    的頭像 發(fā)表于 07-23 11:47 ?2147次閱讀

    AT89C51 單片機中文資料

    電子發(fā)燒友網(wǎng)站提供《AT89C51 單片機中文資料.pdf》資料免費下載
    發(fā)表于 06-24 15:29 ?1次下載

    使用USB轉(zhuǎn)TTL串口板和ST-LINK調(diào)試下載器給STM32單片機下載程序

    本文詳細介紹如何使用ST-LINK/V2和USB轉(zhuǎn)TTL串口板為STM32單片機下載程序,包括STM32啟動模式、JTAG與SWD接口對比、驅(qū)動安裝及官方軟件STM32ST-LINKUtility和FlashLoaderDemo
    的頭像 發(fā)表于 06-20 17:26 ?3350次閱讀
    使用USB轉(zhuǎn)TTL<b class='flag-5'>串口</b>板和ST-LINK調(diào)試下載器給STM32<b class='flag-5'>單片機</b>下載程序

    2.4寸TFT彩屏配套測試程序-51單片機

    如題,2.4寸TFT彩屏配套測試程序-51單片機
    發(fā)表于 06-04 16:26 ?0次下載

    英銳恩精選筆記UART串口通信#單片機開發(fā)#單片機芯片#UART串口通信#單片機

    單片機
    英銳恩科技
    發(fā)布于 :2025年05月15日 16:09:05
    北辰区| 桐梓县| 铜山县| 永嘉县| 平乡县| 阳高县| 巴塘县| 郓城县| 鹤峰县| 金湖县| 凉城县| 江津市| 宁波市| 孝义市| 温州市| 安康市| 大名县| 兴文县| 辽阳县| 福贡县| 玛多县| 富裕县| 石首市| 梅州市| 邹城市| 增城市| 龙陵县| 武穴市| 崇州市| 浙江省| 平度市| 沙田区| 贵溪市| 奉贤区| 彭水| 栾川县| 万安县| 溧阳市| 延吉市| 林甸县| 泾川县|