c語言如何創建虛擬串口,模擬串口的C語言源程序代碼

本程序是模擬串口硬件機制寫的,使用時可設一定時中斷,時間間隔為1/4波特率,每中斷一次調用一次接收函數, 每中斷4次調用一次發送函數,不過.對單片機來說時鐘并須要快.要知道9600的波特率的每個BIT的時間間隔是104us.而單片機中斷一次壓棧出棧一次的時間是20us左右(標準的51核12M晶體)這樣處理時間就要考慮清楚了.呵呵.以下程序是放在定時器中斷程序函數內的

//接收部分

sbit JieShou_D=?? ;//定義接收端口

uint8 DingShiJiShu,JieShou_h;//定時計數,接收緩沖器

uint16 JieShou_T;//接收臨時寄存器

bit KaiShi,JieShou_b;//開始接收標準,接收完成標志

void JieShou(void)? //接收函數,每4次調用接收一位

{

if((KaiShi==0) && (JieShou_D==0))? //串行開始位到來

{

DingShiJiShu=0;???? //開始定時計數

KaiShi=1;

JieShou_T=0xffff;?? //接收臨時寄存器置全1

}

else if((KaiShi==1) && (DingShiJiShu==1))? //第2次調用,串行數據采樣時間到來

{

JieShou_T >>= 1;

if(JieShou_D) JieShou_T |=0x8000;

}

else if(JieShou_T & 0x807f ==0x803f)? //接收完成 JieShou_T=1xxx_xxxx_x011_1111

{

KaiShi=0;

DingShiJiShu=0;

JieShou_h = JieShou_T >> 7; //右移7位得到串行數據

JieShou_b=1;

}

if(KaiShi)

{

DingShiJiShu++;????????? //只在開始接收時定時計數+1

DingShiJiShu &=0x03;???? //每4次調用接收一位

}

}

//發送部分

sbit FaSong_D=?? ;//定義發送端口

uint16 FaSong_h;?? //發送緩沖區

bit FaSong_b;??? //發送完成標志

void KaiShiFaSong(uint8 fs) //設置發送數據,開始發送

{

FaSong_h = fs;

FaSong_h <<= 1;

FaSong_h |= 0x0200;? //FaSong_h=0000_001x_xxxx_xxx_0

FaSong_b=0;? //發送標志=0 表示正在發送中

}

void FaSong(void) //發送函數,每調用一次發一位

{

if(FaSong_h)? //發送未完成

{

if(FaSong_h & 0x0001)

FaSong_D=1;

else?? FaSong_D=0;

FaSong_h >>= 1;

}

else

FaSong_b =1;? //發送完成標志=1 表示發送完成

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278935.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webjars管理靜態資源

webjars用途簡單解釋 : 利用Servlet3協議規范中,包含在JAR文件/META-INF/resources/路徑下的資源可以直接被web訪問到這一原理&#xff0c;將前端靜態資源打成jar包方便管理 靜態資源打jar包 新建maven工程&#xff0c; 將需要打包的靜態資源放入src/main/resources中 2. ma…

Windows Intellij環境下Gradle的 “Could not determine Java version from ‘9.0.1’”的解決方式...

當我導入Gradle項目初試Java spring的時候&#xff0c;遇到下面報錯: Gradle complete project refresh failed Error:Could not determine java version from 9.0.1. 參考這篇 http://www.ddiinnxx.com/solving-not-determine-java-version-9-0-1-gradle-intellij-macosx/ 進行…

如何計算iPhone和Apple Watch上的步數

Khamosh PathakKhamosh PathakAccording to conventional wisdom, 10,000 steps a day equals a healthy life. No matter what your target is, though, you’ll need a reliable way to count your steps. The good news is you can do so on your iPhone or Apple Watch! 根…

在c語言中load,一道題理清Objective-C中的load和initialize

Objective-C中有兩個方法比較特殊&#xff0c;他們會在Runtime時根據情況自動調用&#xff0c;下面我們簡單分析一下調用時機以及使用場景~一般在iOS初中級面試時偶爾會被問到load和initialize方法&#xff0c;我出了一道題&#xff0c;估計會搞暈很多人。大家來看一下下面的程…

018.Zabbix維護時間和模板導入

一 維護時間 在某些正常業務維護期間&#xff0c;不需要進行告警&#xff0c;可添加維護時間。二 維護時間添加 2.1 維護 參數描述Name維護名稱Maintenance type兩種維護類型可選:With data collection - 依舊收集數據No data collection - 暫停收集數據Active since維護周期開…

本地服務器下的局域網安全嗎_本地安全認證服務器

本地服務器下的局域網安全嗎Today a reader had a very good question about lsass.exe is the Microsoft security management process for domain access and local security policies. Simply put it manages who logs on to your PC and/or Server. There are a few viru…

Query-digest-UI監控慢查詢,以及此工具的改進版

本文主要描述基于pt-query-digest工具對慢查詢日志進行監控的工具Query-digest-UI。(安裝、使用、介紹以及benren提供的改進版。) 本文中描述的內容與其他網站上對Query-digest-UI的安裝和使用稍有不同&#xff0c;因為本人對此工具稍做了調整。歡迎轉載&#xff0c;請注明作者…

電熱水器工作過程 c語言,熱水器工作流程圖

燃氣熱水器做為熱水供應設備&#xff0c;被很多家庭所采用&#xff0c;然而&#xff0c;恒溫作為燃氣熱水器的一個痛點&#xff0c;一次次被擊中&#xff0c;那么到底為什么燃氣熱水器實現恒溫這么難呢&#xff1f;我們將從原理講起&#xff0c;帶您認識真正的燃氣熱水器。燃氣…

es6 模塊化

test.js var vm"321321"; export { vm }; ------------------------------------------------------ export var name"李四"; a.vue import {vm} from /test console.log(vm); ------------------------------------------------------ console.log(name);…

linux上tail命令_如何在Linux上使用tail命令

linux上tail命令Fatmawati Achmad Zaenuri/ShutterstockFatmawati Achmad Zaenuri / ShutterstockThe Linux tail command displays data from the end of a file. It can even display updates that are added to a file in real-time. We show you how to use it. Linux tail…

初學者萬年歷c語言源代碼,C語言萬年歷的源程序

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓for(j1;j<mon[i];j){cprintf("%3d ",j);/*if((firstj-1)%70)putchar(\n);*/}/*first(firstmon[i])%7;if(first0)first7;*/}}void month5_8(){for(i0;i<2;i){window(2i*w,3,29w*i,11);textbackground(5);clrscr();t…

用imageMagick的composite合并圖片

composite命令可以非常方便的合并兩張圖片 因此用來進行圖像加水印、批量增加邊框等常用的變換 最簡單的用法為&#xff1a; composite -gravity north src.jpg coverback.jpg des.jpg 其中src.jpg為前景圖片 coverback.jpg為背景圖片。 des.jpg為疊加后的結果 -gravity north …

白帽子講web安全——認證與會話管理

在看白帽子講web安全&#xff0c;剛好看到認證與會話管理&#xff1a;也就是我們在平常滲透測試中遇到最多的登錄頁面&#xff0c;也即是用戶名和密碼認證方式&#xff0c;這是最常見的認證方式。 了解兩個概念&#xff1a;認證和授權 1&#xff09;&#xff1a;認證的目的是為…

iphone充電圖_哪些iPhone具有無線充電功能?

iphone充電圖Kevin Parrish凱文帕里什Wireless charging means you can re-energize your phone’s battery without a physical tether. It also prevents possible damage to your phone’s charging port. Unfortunately, not all phones support wireless charging, but we…

關聯分析算法c語言實現,機器學習關聯分析

AI開發平臺ModelArtsModelArts是面向開發者的一站式AI開發平臺&#xff0c;為機器學習與深度學習提供海量數據預處理及半自動化標注、大規模分布式Training、自動化模型生成&#xff0c;及端-邊-云模型按需部署能力&#xff0c;幫助用戶快速創建和部署模型&#xff0c;管理全周…

windows平臺下基于QT和OpenCV搭建圖像處理平臺

在之前的博客中&#xff0c;已經分別比較詳細地闡述了“windows平臺下基于VS和OpenCV”以及“Linux平臺下基于QT和OpenCV"搭建圖像處理框架&#xff0c;并且生成了相應的免費視頻。這篇博客的主要內容&#xff0c;就是基于最新版本的相應工具&#xff0c;在windows平臺下&…

android死鎖解決方案,【線程死鎖】Android多線程死鎖產生的原因以及如何避免

一、死鎖定義1、生活中的列子兩人吃飯&#xff0c;但只有一雙筷子&#xff0c;2人輪流吃(同時擁有2只筷子才能吃)&#xff0c;某個時候一人拿了左筷子&#xff0c;一人拿了右筷子&#xff0c;兩人同時占用一個資源&#xff0c;等待另一個資源&#xff0c;這時候甲等乙吃完并釋放…

前端開發 常用用的靜態服務器

1 運用anywhere 安裝 &#xff1a;npm install anywhere -g想要以某個路徑作為靜態文件服務器的根目錄分享&#xff0c;只需要在該目錄下執行&#xff1a;anywhere 就會默認8000打開網頁&#xff0c; 若文件不是index.html 需要輸入文件名 A: anywhere -p 8000 ## 指定靜態服務…

前端面試題整理

1.HTML5的新特性。 主要講講新增哪些API:地理定位&#xff0c;拖放&#xff0c;web存儲應用緩存&#xff0c;webworkers&#xff0c; sse 。 http://www.w3school.com.cn/html5/html_5_intro.asp 2.CSS3的新特性。 https://segmentfault.com/a/1190000010780991 3、使用嚴格模式…

android mvvm 官方例子,詳解Android的MVVM框架 - 數據綁定

&#xfeff;本教程是跟著 Data Binding Guide學習過程中得出的一些實踐經驗&#xff0c;同時修改了官方教程的一些錯誤&#xff0c;每一個知識點都有對應的源碼&#xff0c;爭取做到實踐與理論相結合。Data Binding 解決了 Android UI 編程中的一個痛點&#xff0c;官方原生支…