亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? testcom.c

?? Keil C 51單片機串口通信程序, 通過該程序可以了解和使用單片機串口通信
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <CPU.H>

// 類型定義
#define BYTE unsigned char
#define UINT unsigned int
#define BOOL unsigned int
#define ULNG unsigned long

///////////////////
// 硬件引腳功能定義 //
///////////////////
sbit bCSX = P1^4; // p1.4(PLCC44-P6)為程序運行指示,低電平亮;

////////////
// 時鐘計數 //
////////////
BYTE ucMsCount;     // 用于1ms計時(受GPS脈沖控制)
UINT uiMsNow;       // 當前毫秒數(受GPS脈沖控制)
bit  b250MsPassed;  // 已經過了250毫秒, LED-RUN
bit  bOneSecPassed; // 已經過了1秒
BYTE ucSecCount;    // 用于1s計時(受GPS脈沖控制)
bit  bOneMinPassed; // 每分鐘,重新初始化一次串口,以提高可靠性

// 中斷服務初始化
void vInterruptInitialize()
{
	// =====================================================
	// IE:中斷允許寄存器;復位后:IE = 0x00;1允許,0-禁止;
	// =====================================================
	//   D7    D6    D5    D4    D3    D2    D1    D0
	// -----------------------------------------------------
	//   EA          ET2   ES    ET1   EX1   ET0   EX0
	// -----------------------------------------------------
	//  EX0,EX1:外部中斷0、1的中斷允許位;
	//  ET0,ET1:定時器/計數器0、1(T/C0,T/C1)溢出中斷允許位;
	//  ES:串口中斷允許位;
	//  ET2:定時器/計數器2(T/C2)溢出中斷允許位;
	//  EA:CPU總的中斷允許;
	// -----------------------------------------------------

	// =================================================
	// IP:中斷優先級寄存器;復位后:IP = 0x00;1→高,0→低;
	// =================================================
	//   D7    D6    D5    D4    D3    D2    D1    D0
	// -------------------------------------------------
	//               PT2   PS    PT1   PX1   PT0   PX0
	// -------------------------------------------------
	// PX0,PX1:外部中斷0、1中斷優先級控制位;
	// PT0,PT1:定時器/計數器0、1中斷優先級控制位;
	// PS:串口中斷優先級控制位;
	// PT2:定時器/計數器2(T/C2)中斷優先級控制位;
	// -------------------------------------------------

	// ======================================================
	// TCON:定時器/計數器控制寄存器;復位后:TCON = 0x00
	// ======================================================
	//   D7    D6    D5    D4    D3    D2    D1    D0
	// --------------------------------------------------------
	//   TF1   TR1   TF0   TR0   IE1   IT1   IE0   IT0
	// --------------------------------------------------------
	// TF1,TF0:定時器x溢出中斷標志,當定時器x溢出時由內部硬件至置位,
	//          當CPU轉向中斷服務程序時,由內部硬件清除;
	// TR1,TR0:定時器運行控制位,由軟件置位、清除來控制定時器開啟、關閉;
	// IE1,IE0:外部觸發中斷請求標志;
	// IT1,IT0:外部中斷觸發方式,1-下降沿觸發;0-低電平觸發;
	// --------------------------------------------------------

	EA = 0;  // 中斷允許總控制

	EX0 = 0; // 外部中斷0允許
	EX1 = 0; // 外部中斷1允許
	IT0 = 0; // 外部中斷0外下降沿有效
	IT1 = 0; // 外部中斷1外下降沿有效
	PS = 1;  // 串口中斷優先級高
	ES = 1;  // 串口中斷使能
	PX0 = 0; // 外部中斷0優先級低
	PX1 = 0; // 外部中斷1優先級低
	ET1 = 0; // 定時器1禁止中斷

	// =================================================
	// TMOD: 定時器工作方式控制寄存器,復位后TMOD = 0x00
	// =================================================
	//  D7   D6   D5   D4   D3   D2   D1   D0
	// -------------------+---------------------------
	//  GATE C//T M1   M0 | GATE C//T M1   M0
	// -------------------+---------------------------
	// ------ 定時器1 -----+--- 定時器0 ---------------
	// M1、M0:工作方式設置;
	//       00-13位計數器;
	//       01-16位計數器;
	//       10-可自動再裝入的8位計數器(從THx中自動裝到TLx中);
	//       11-把定時器分為兩個8為的計數器或關閉定時器1;
	// C//T:1-計數器功能,0-定時器功能;
	// GATE:選通控制;1-同時/INTx為高電平且TRx為1時選通定時器x;
	//       0-每當TRx為1時就選通定時器x;
	// -----------------------------------------------------

    // 定時器/計數器0初始化
	TMOD = (TMOD & 0xF0) | 0x2; // T0工作于:10-可自動再裝入的8位計數器(從THx中自動裝到TLx中);
	// 22.1184MHz / 12分頻 = 計數頻率為1.8432MHz,100個us的設置
	// (2^8 - TL) / (1.8432 * 10^6) = 10^(-4) ==> TL ≈ 72
	TH0 = TL0 = 72;
	ET0 = 1; // 定時器0允許中斷
	TR0 = 1; // T0使能

	EA = 1;  // 中斷允許總控制
}

// 串口初始化
#define cnBaudRate  19200 // 19200bps、8、N、1
#define cnFosc   22118400 // 當前晶振: 22.1184MHz

bit bComSendBufEmpty; // 串口的發送緩沖區空的標志: 用于啟動TI

void vSerialInitialize()
{
	// =====================================================================
	// SCON:串口控制寄存器;復位后:SCON = 0x00;
	// =====================================================================
	//   D7    D6    D5    D4    D3    D2    D1    D0
	// ---------------------------------------------------------------------
	//   SM0   SM1   SM2   REN   TB8   RB8   TI    RI
	// ---------------------------------------------------------------------
	// SM1.SM0串口工作方式控制:
	//      00-同步移位寄存器fosc/12;移位寄存器工作方式;
	//      01-異步收發,由定時器控制;8位數據位的UART工作方式;
	//      10-異步收發,fosc/32或fosc/64;9位數據位的UART工作方式;
	//      11-異步收發,由定時器控制;9位數據位的UART工作方式;
	//   波特率:
	//      00-同步fosc/12;
	//      01.03-異步,
	//         1. 16位定時器1的溢出中斷,2^SMOD * 定時器1的溢出率 / 32;例,要
	//            取得110bps,定時器1的溢出率為32*110=3520,定時器1是加1定時器,
	//            每12個振蕩周期加1,因此當fosc=12MHz時,定時器每隔284us中斷一次:
	//              fosc / (12 * 3520) = 12 * 10^6 / (12 * 2520) = 284us
	//            考慮到溢出中斷后CPU響應中斷以及進行TH、TL的軟件重裝需要時間,
	//            因此扣除8個us,則定時器1在裝入后定時276us發生一次中斷,可以計算
	//            得到TH1=FEH、TL1=EBH。
	//                           常用波特率與其他參數的選取關系
	//            --------------------------------------------------------------
	//              串口     波特率    fosc=6MHz     fosc=12MHz   fosc=11.0592Hz
	//             工作方式         SMOD TMOD TH1  SMOD TMOD TH1  SMOD TMOD TH1
	//            --------------------------------------------------------------
	//              方式0      1M                    x   x   x
	//            --------------------------------------------------------------
	//              方式2     375k                   1   x   x
	//                      187.5k   1    x   x      0   x   x
	//            --------------------------------------------------------------
	//                       62.5k                   1   20  FF
	//                       19.2k                                  1  20  FD
	//                        9.6k                                  0  20  FD
	//                        4.8k                   1   20  F3     0  20  FA
	//              方式1     2.4k    1   20   F3    0   20  F3     0  20  F4
	//                或      1.2k    1   20   E6    0   20  E6     0  20  E8
	//              方式3      600    1   20   CC    0   20  CC     0  20  D0
	//                         300    0   20   CC    0   20  98     0  20  A0
	//                       137.5    1   20   1D    0   20  1D     0  20  2E
	//                         110    0   20   72    0   10  FEEB   0  10 FEFF
	//            --------------------------------------------------------------
	//         2. 自動重載方式的定時器2,TMOD=0010xxxx,則2^SMOD * fosc / (32 * 12 * (256 - TH1));
	//         3. SMOD為PCON的最高位;
	//      02-異步,fosc/32或fosc/64;
	// SM2:多機通信控制為:1-收到第9位(RB8)為1,RI置1;0-接收到字符RI就置1;方式0時,SM2應為0;
	// REN:串口接收允許位:1-允許;0-禁止;
	// TB8:方式2和3時為發送的第9位數據,由軟件置位或清零;可以作為奇偶校驗位,或多機通信中表示地址或數據(1/0);
	// RB8:方式2和3時為接收到的第9位數據,作為奇偶校驗位,或多機通信的地址或數據(1/0);方式1時,為接收到的停止位;
	// TI:發送中斷標志:由硬件置位,必須由軟件清零;
	// RI:接收中斷標志:由硬件置位,必須由軟件清零;
	// -----------------------------------------------------------------------------------
	// 波特率設置技術:波特率隨串口工作方式、晶振頻率、電源控制PCON的SMOD等有關,另外與定時器T1設置也有關
	//     1. 方式0:   波特率 = fosc / 12;
	//     2. 方式2:   波特率 = fosc / 64 (SMOD=0)、fosc / 32 (SMOD=1);
	//     3. 方式1和3:
	//                 波特率 = T1溢出率 / n,n = 32或64,
	//                 T1溢出率 = 計數速率 / (256 - X)
	//                 T1為工作于方式2,即自動重裝載方式,X為TH1和TL1中裝入的初始計數值;
	//                 計數速率:定時器1的計數速率與定時器的工作方式選擇有關。當選擇T1為定時工作方式時,
	//                         計數速率 = fosc / 12,
	//        由此可得,
	//                 波特率 = (2 ^ SMOD) / 32 * fosc / 12 /(256 - X)
	//                       = (2 ^ SMOD) * fosc / (32 * 12 * (256 - X))
	//
	//                     X = 256 - (2 ^ SMOD) * fosc / (32 * 12 * 波特率)
	//                       = 256 - (2 ^ SMOD) * fosc / (384 * 波特率)
	//
	//        例如:
	//             假定波特率要求為9600bps,系統晶振為fosc=11.0592MHz,當SMOD=1時,TH1和TL1的初值:
	//
	//             波特率 = 2 * 11.0592 * (10^6) / (32 * 12 * (256 - X)),
	//                 X = 256 - 2 * 11059200 / (384 * 9600)) = 250 = FAH,
	//
	//             THTL = FAH,波特率 = 9599.836bps,誤差 = 0.00177%;
	// -----------------------------------------------------------------------------------
	// 數據位、奇偶校驗位和停止位的不同:
	//     (1B、8D、0P、1S)1位起始位、8位數據位、0位奇偶位、1位停止位;或者,
	//     (1B、7D、1P、1S)1位起始位、7位數據位、1位奇偶位、1位停止位;或者,
	//     (1B、7D、0P、2S)1位起始位、7位數據位、0位奇偶位、2位停止位;或者,
	//     (1B、8D、1P、1S)1位起始位、8位數據位、1位奇偶位、1位停止位;或者,
	//     (1B、8D、0P、2S)1位起始位、8位數據位、0位奇偶位、2位停止位;
	//
	//     PSW.0是每一指令周期累加器A的奇偶標志,由硬件置位或清零;A中1的個數為偶數,則PSW.0為0;為奇數,
	//     PSW.0為1。因此,可以利用累加器A來完成不同方式下的通信需求。
	//
	//   設置采用:
    //     (1B、8D、0P、1S)、(1B、7D、1P、1S)和(1B、7D、2S)采用:
    //          01-異步收發,由定時器控制;8位數據位的UART工作方式;SM2=0:接收到字符RI就置1;
	//     (1B、8D、1P、1S)和(1B、8D、2S)采用:
	//          11-異步收發,由定時器控制;9位數據位的UART工作方式;SM2=0:接收到字符RI就置1;
	//
	//   數據發送:
	//     (1B、8D、0P、1S)1位起始位、8位數據位、0位奇偶位、1位停止位;
	//         。發送該字節
	//
	//     (1B、7D、1P、1S)1位起始位、7位數據位、1位奇偶位、1位停止位;
	//         。將發送的字節屏蔽bit7后送入A,可以得到奇偶值P;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合一区二区三区| 中文字幕欧美日韩一区| 精品第一国产综合精品aⅴ| 欧美mv日韩mv| 亚洲综合丝袜美腿| 成人免费av在线| 日韩精品自拍偷拍| 亚洲午夜电影在线观看| 美女一区二区久久| 欧美亚洲另类激情小说| 国产嫩草影院久久久久| 欧美大片一区二区三区| 国产精品国产三级国产aⅴ原创| 国产毛片精品国产一区二区三区| 日韩国产高清影视| 天堂va蜜桃一区二区三区 | 亚洲欧美偷拍卡通变态| 国产精品免费aⅴ片在线观看| 国产精品嫩草99a| 亚洲色图第一区| 天堂成人免费av电影一区| 美女脱光内衣内裤视频久久影院| 麻豆高清免费国产一区| 国产电影一区在线| 色久综合一二码| 欧美电影免费观看高清完整版在线| xvideos.蜜桃一区二区| 亚洲日本在线a| 日韩国产高清影视| 国产精品一卡二卡在线观看| 日韩亚洲欧美综合| 五月天一区二区| 国产精品成人免费在线| 丝袜诱惑亚洲看片| 欧美日韩亚洲综合| 图片区小说区区亚洲影院| 欧美日韩一本到| 亚州成人在线电影| 欧美一级爆毛片| 精品一区二区三区视频在线观看| 日韩写真欧美这视频| 日本欧美在线观看| 亚洲精品一区二区三区蜜桃下载| 精品一区二区影视| 国产精品久久久久影院亚瑟| eeuss鲁片一区二区三区| 亚洲四区在线观看| 欧美午夜精品一区二区三区| 日韩精品一卡二卡三卡四卡无卡| av成人老司机| 夜夜嗨av一区二区三区四季av| 在线视频欧美区| 日韩电影网1区2区| 亚洲精品在线三区| 成人综合婷婷国产精品久久免费| 国产精品久久久久9999吃药| 99精品偷自拍| 日韩精品一级中文字幕精品视频免费观看 | 久久奇米777| 日韩精品一区二区三区视频在线观看 | www.色精品| 欧美日韩国产乱码电影| 欧美国产精品v| 国内外精品视频| 日韩一区二区不卡| 日韩av电影免费观看高清完整版 | 精品国免费一区二区三区| 国产一区二区免费在线| 国产精品不卡在线观看| 欧美性xxxxx极品少妇| 精品一区免费av| 亚洲三级免费观看| 日韩西西人体444www| 久久久久久一级片| 亚洲一区二区不卡免费| 91精品国产综合久久小美女| 国产成人综合在线| 亚洲h在线观看| 国产女主播在线一区二区| 欧洲精品视频在线观看| 国产一区二区三区精品视频| 一区二区三区蜜桃网| 久久久久久久网| 欧美三区免费完整视频在线观看| 韩国女主播成人在线| 亚洲国产日日夜夜| 国产精品免费免费| 欧美一区二区啪啪| 欧美主播一区二区三区美女| 国产a级毛片一区| 日韩精品成人一区二区三区| 亚洲人精品一区| 久久综合五月天婷婷伊人| 欧美日韩国产一级片| 91农村精品一区二区在线| 国产高清不卡一区| 美日韩一区二区三区| 精品国产污污免费网站入口| 国产一区二区美女| 首页综合国产亚洲丝袜| 亚洲猫色日本管| 欧美国产亚洲另类动漫| 精品国产一区久久| 777午夜精品免费视频| 在线观看一区二区视频| av一区二区三区四区| 国产成人aaaa| 高清国产一区二区| 国产自产v一区二区三区c| 免费观看成人av| 蜜桃视频一区二区三区| 天堂在线一区二区| 日韩精品一二三四| 日本色综合中文字幕| 日韩精品欧美精品| 本田岬高潮一区二区三区| 国产乱子轮精品视频| 久久99热这里只有精品| 另类专区欧美蜜桃臀第一页| 日本不卡不码高清免费观看| 99久久er热在这里只有精品15| 久久精品国产第一区二区三区| 亚洲午夜久久久久久久久电影网| 亚洲精品免费在线观看| 一区二区高清视频在线观看| 一区二区三区四区不卡视频 | www.性欧美| 99国产精品国产精品久久| 色综合一区二区| 欧美亚洲国产一区二区三区 | 波多野结衣一区二区三区 | 成人国产免费视频| www.成人网.com| 色成年激情久久综合| 欧美三级日本三级少妇99| 欧美老肥妇做.爰bbww| 欧美一区二区精品久久911| 国产一区二区中文字幕| 国产成a人无v码亚洲福利| 粉嫩aⅴ一区二区三区四区五区| 成人av网站大全| 欧美欧美午夜aⅴ在线观看| 欧美一区二区不卡视频| 国产亚洲精品精华液| 亚洲女性喷水在线观看一区| 三级久久三级久久| 成人一区二区三区| 欧美日韩国产一级| 国产女人18水真多18精品一级做| 夜夜精品视频一区二区| 青青草国产成人av片免费| 国产激情一区二区三区四区 | 国产一区二区三区免费观看| 亚洲444eee在线观看| 亚洲一区影音先锋| 亚洲精品国产高清久久伦理二区| 综合久久综合久久| 亚洲欧美激情在线| 欧亚洲嫩模精品一区三区| 国产精品88888| 中文字幕第一页久久| 亚洲乱码国产乱码精品精98午夜| 亚洲国产日韩综合久久精品| 国产永久精品大片wwwapp | 加勒比av一区二区| 91久久精品一区二区二区| 精品日韩成人av| 亚洲精品免费在线| 国产宾馆实践打屁股91| 91麻豆精品国产91久久久久| 国产精品网站导航| 久久超碰97中文字幕| 欧美私模裸体表演在线观看| 国产区在线观看成人精品| 午夜欧美在线一二页| 成人性视频网站| 日韩欧美一级特黄在线播放| 国产精品免费久久久久| 美女免费视频一区| 在线观看三级视频欧美| 中文字幕欧美日韩一区| 免费观看日韩av| 欧美无乱码久久久免费午夜一区| 国产亚洲美州欧州综合国| 七七婷婷婷婷精品国产| 欧美视频在线一区二区三区| 自拍偷拍欧美激情| 成人性生交大片免费看视频在线 | 午夜视频一区在线观看| 99久久综合99久久综合网站| 久久嫩草精品久久久精品| 蜜臀av一级做a爰片久久| 欧美日韩高清在线播放| 一卡二卡欧美日韩| 91视频91自| 一区二区三区加勒比av| 日本黄色一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 国产免费久久精品| 国产在线精品一区二区夜色|