wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> 基礎教程 >> 瀏覽文章

第十二課 C51開關分支語句

作者:佚名   來源:本站原創   點擊數:  更新時間:2007年07月14日   【字體:

學習了條件語句,用多個條件語句能實現多方向條件分支,但是能發現使用過多的 條件語句實現多方向分支會使條件語句嵌套過多,程序冗長,這樣讀起來也很不好讀。這個時候 使用開關語句同樣能達到處理多分支選擇的目的,又能使程序結構清晰。它的語法為下:

switch  (表達式)

{

case  常量表達式 1:  語句 1;  break; case  常量表達式 2:  語句 2;  break; case  常量表達式 3:  語句 3;  break; case  常量表達式 n:  語句 n;  break; default:    語句

}

運行中 switch 后面的表達式的值將會做為條件,與 case 后面的各個常量表達式的值相 對比,如果相等時則執行 case 后面的語句,再執行 break(間斷語句)語句,跳出 switch 語句。如果 case 后沒有和條件相等的值時就執行 default 后的語句。當要求沒有符合的條 件時不做任何處理,則能不寫 default 語句。

在上面的章節中我們一直在用 printf 這個標準的 C 輸出函數做字符的輸出,使用它當 然會很方便,但它的功能強大,所占用的存儲空間自然也很大,要 1K 左右字節空間,如果 再加上 scanf 輸入函數就要達到 2K 左右的字節,這樣的話如果要求用 2K 存儲空間的芯片時 就無法再使用這兩個函數,例如 AT89C2051。在這些小項目中,通常我們只是要求簡單的字 符輸入輸出,這里以筆者發表在本人網站的一個簡單的串行口應用實例為例,一來學習使用開 關語句的使用,二來簡單了解 51 芯片串行口基本編程。這個實例是用 PC 串行口通過上位機程序 與由 AT89c51 組成的下位機相通信,實現用 PC 軟件控制 AT89c51 芯片的 IO 口,這樣也就可 以再通過相關電路實現對設備的控制。為了方便實驗,在此所使用的硬件還是用回以上課程 中做好的硬件,以串行口和  PC  連接,用  LED  查看實驗的結果。原代碼請到在筆者的網站 下載,上面有  單片機c語言  下位機源碼、PC 上位機源碼、電路圖等資料。

代碼中有多處使用開關語句的,使用它對不一樣的條件做不一樣的處理,如在 CSToOut 函數 中根據 CN[1]來選擇輸出到那個 IO 口,CN[1]=0 則把 CN[2]的值送到 P0,CN[1]=1 則送到 P1, 這樣的寫法比起用 if (CN[1]==0)這樣的判斷語句來的清晰明了。當然它們的效果沒有太大 的差別(在不考慮編譯后的代碼執行效率的情況下)。

在這段代碼主要的作用就是通過串行口和上位機軟件進行通信,跟據上位機的命令字串, 對指定的 IO 端口進行讀寫。InitCom 函數,原型為 void InitCom(unsigned char BaudRate), 其作用為初始化串行口。它的輸入參數為一個字節,程序就是用這個參數做為開關語句的選擇 參數。如調用 InitCom(6),函數就會把波特率設置為 9600。當然這段代碼只使用了一種波特 率,能用更高效率的語句去編寫,這里就不多討論了。

看到這里,你也許會問函數中的 SCON,TCON,TMOD,SCOM 等是代表什么?它們是特殊 功能寄存器。

SBUF    數據緩沖寄存器    這是一個能直接尋址的串行口專用寄存器。有朋友這樣問起 過“為何在串行口收發中,都只是使用到同一個寄存器 SBUF?而不是收發各用一個寄存器。” 實際上 SBUF 包含了兩個獨立的寄存器,一個是發送寄存,另一個是接收寄存器,但它們都 共同使用同一個尋址地址-99H。CPU 在讀 SBUF 時會指到接收寄存器,在寫時會指到發送寄

存器,而且接收寄存器是雙緩沖寄存器,這樣能避免接收中斷沒有及時的被響應,數據沒


 

有被取走,下一幀數據已到來,而造成的數據重疊問題。發送器則不需要用到雙緩沖,一般 情況下我們在寫發送程序時也不必用到發送中斷去外理發送數據。操作 SBUF 寄存器的方法 則很簡單,只要把這個 99H 地址用關鍵字 sfr 定義為一個變量就能對其進行讀寫操作了,

如 sfr  SBUF  =  0x99;當然你也能用其它的名稱。通常在標準的 reg51.h 或 at89x51.h 等 頭文件中已對其做了定義,只要用#include 引用就能了。

SCON    串行口控制寄存器    通常在芯片或設備中為了監視或控制接口狀態,都會引用 到接口控制寄存器。SCON 就是 51 芯片的串行口控制寄存器。它的尋址地址是 98H,是一個 能位尋址的寄存器,作用就是監視和控制 51 芯片串行口的工作狀態。51 芯片的串行口能 工作在幾個不一樣的工作模式下,其工作模式的設置就是使用 SCON 寄存器。它的各個位的具 體定義如下:

(MSB)                                                                                                (LSB) SM0          SM1          SM2          REN          TB8          RB8           TI            RI

表 8-1    串行口控制寄存器 SCON

SM0、SM1  為串行口工作模式設置位,這樣兩位能對應進行四種模式的設置。看表  8

-2 串行口工作模式設置。

SM0

SM1

模    式

功    能

波特率

0

0

0

同步移位寄存器

fosc/12

0

1

1

8 位 UART

可變

1

0

2

9 位 UART

fosc/32 或 fosc/64

1

1

3

9 位 UART

可變

表 8-2    串行口工作模式設置

在這里只說明最常用的模式 1,其它的模式也就一一略過,有興趣的朋友能找相關的 硬件資料查看。表中的  fosc  代表振蕩器的頻率,也就是晶體震蕩器的頻率。UART  為(Universal Asynchronous  Receiver)的英文縮寫。

SM2 在模式 2、模式 3 中為多處理機通信使能位。在模式 0 中要求該位為 0。

REM 為允許接收位,REM 置 1 時串行口允許接收,置 0 時禁止接收。REM 是由軟件置位或 清零。如果在一個電路中接收和發送引腳 P3.0,P3.1 都和上位機相連,在軟件上有串行口中斷 處理程序,當要求在處理某個子程序時不允許串行口被上位機來的控制字符產生中斷,那么可 以在這個子程序的開始處加入 REM=0 來禁止接收,在子程序結束處加入 REM=1 再次打開串行口 接收。大家也能用上面的實際源碼加入 REM=0 來進行實驗。

TB8 發送數據位 8,在模式 2 和 3 是要發送的第 9 位。該位能用軟件根據需要置位或 清除,通常這位在通信協議中做奇偶位,在多處理機通信中這一位則用于表示是地址幀還是 數據幀。

RB8 接收數據位 8,在模式 2 和 3 是已接收數據的第 9 位。該位可能是奇偶位,地址/ 數據標識位。在模式 0 中,RB8 為保留位沒有被使用。在模式 1 中,當 SM2=0,RB8 是已接 收數據的停止位。

TI 發送中斷標識位。在模式 0,發送完第 8 位數據時,由硬件置位。其它模式中則是在 發送停止位之初,由硬件置位。TI 置位后,申請中斷,CPU 響應中斷后,發送下一幀數據。 在任何模式下,TI 都必須由軟件來清除,也就是說在數據寫入到 SBUF 后,硬件發送數據,

中斷響應(如中斷打開),這個時候 TI=1,表明發送已完成,TI 不會由硬件清除,所以這個時候必須


 

用軟件對其清零。

RI 接收中斷標識位。在模式 0,接收第 8 位結束時,由硬件置位。其它模式中則是在接 收停止位的半中間,由硬件置位。RI=1,申請中斷,要求 CPU 取走數據。但在模式 1 中,SM2=1 時,當未收到有效的停止位,則不會對 RI 置位。同樣 RI 也必須要靠軟件清除。

常用的串行口模式 1 是傳輸 10 個位的,1 位起始位為 0,8 位數據位,低位在先,1 位停止 位為 1。它的波特率是可變的,其速率是取決于定時器 1 或定時器 2 的定時值(溢出速率)。 AT89c51 和 AT89C2051 等 51 系列芯片只有兩個定時器,定時器 0 和定時器 1,而定時器 2

是 89C52 系列芯片才有的。

波特率    在使用串行口做通信時,一個很重要的參數就是波特率,只有上下位機的波特率 一樣時才能進行正常通信。波特率是指串行端口每秒內能傳輸的波特位數。有一些開始學習 的朋友認為波特率是指每秒傳輸的字節數,如標準  9600  會被誤認為每秒種能傳送  9600 個字節,而實際上它是指每秒能傳送 9600 個二進位,而一個字節要 8 個二進位,如用串 口模式 1 來傳輸那么加上起始位和停止位,每個數據字節就要占用 10 個二進位,9600 波特 率用模式 1 傳輸時,每秒傳輸的字節數是 9600÷10=960 字節。51 芯片的串行口工作模式 0 的波特率是固定的,為 fosc/12,以一個 12M 的晶體震蕩器來計算,那么它的波特率能達到 1M。 模式 2 的波特率是固定在 fosc/64 或 fosc/32,具體用那一種就取決于 PCON 寄存器中的 SMOD 位,如 SMOD 為 0,波特率為 focs/64,SMOD 為 1,波特率為 focs/32。模式 1 和模式 3 的波 特率是可變的,取決于定時器 1 或 2(52 芯片)的溢出速率。那么我們怎么去計算這兩個模 式的波特率設置時相關的寄存器的值呢?能用以下的公式去計算。

波特率=(2SMOD÷32)×定時器 1 溢出速率

上式中如設置了 PCON 寄存器中的 SMOD 位為 1 時就能把波特率提升 2 倍。通常會使用 定時器 1 工作在定時器工作模式 2 下,這個時候定時值中的 TL1 做為計數,TH1 做為自動重裝值    , 這個定時模式下,定時器溢出后,TH1 的值會自動裝載到 TL1,再次開始計數,這樣能不 用軟件去干預,使得定時更準確。在這個定時模式 2 下定時器 1 溢出速率的計算公式如下:

溢出速率=(計數速率)/(256-TH1) 上式中的“計數速率”與所使用的晶體振蕩器頻率有關,在 51 芯片中定時器啟動后會

在每一個機器周期使定時寄存器 TH 的值增加一,一個機器周期等于十二個振蕩周期,所以

能得知 51 芯片的計數速率為晶體振蕩器頻率的 1/12,一個 12M 的晶體震蕩器用在 51 芯片上, 那么 51 的計數速率就為 1M。通常用 11.0592M 晶體是為了得到標準的無誤差的波特率,那 么為何呢?計算一下就知道了。如我們要得到 9600 的波特率,晶體震蕩器為 11.0592M 和 12M,定 時器 1 為模式 2,SMOD 設為 1,分別看看那所要求的 TH1 為何值。代入公式:

11.0592M

9600=(2÷32)×((11.0592M/12)/(256-TH1))

TH1=250    //看看是不是和上面實例中的使用的數值一樣?

12M

9600=(2÷32)×((12M/12)/(256-TH1)) TH1≈249.49

上面的計算能看出使用 12M 晶體的時候計算出來的 TH1 不為整數,而 TH1 的值只能取


 

整數,這樣它就會有一定的誤差存在不能產生精確的 9600 波特率。當然一定的誤差是能 在使用中被接受的,就算使用 11.0592M 的晶體振蕩器也會因晶體本身所存在的誤差使波特

率產生誤差,但晶體本身的誤差對波特率的影響是十分之小的,能忽略不計。

關閉窗口

相關文章

欧美日韩精品一区视频| 亚洲国产一二三区| 欧美另类高清视频在线| 茄子视频成人在线观看| 真实国产乱子伦对白视频| 欧美日韩一区二区三区69堂| 特大黑人巨人吊xxxx| 精品在线视频免费| 免费观看a视频| 美女被人操网站| 在线免费观看av网站| 欧美xxxx免费虐| 1313精品午夜理伦电影| 中文字幕一区二区三区久久网站| 老鸭窝一区二区久久精品| 国产嫩草影院久久久久| 欧美色视频一区| 久久精品中文字幕免费mv| 91精品国产自产在线| 女人床在线观看| 日韩大尺度视频| 在线精品免费视| 欧美日韩性视频一区二区三区| 美女视频黄a视频全免费观看| 国产丝袜视频在线播放| 四虎影视精品| 久久成人免费网| 亚洲午夜视频在线观看| 亚洲美女av网站| 国产一区二区丝袜| 国产3p露脸普通话对白| 日韩中文字幕电影| 国产剧情精品在线| 操女生的网站| 牛牛电影国产一区二区| 久久99视频| 国产成人精品网址| 欧洲视频一区二区| 欧美人与物videos| 四虎影院一区二区三区| 中文字幕人妻一区| 一级做a爱片性色毛片| 芬兰videosfree性少妇| 动漫一区在线| 欧美日韩亚洲在线观看| 99久久伊人网影院| 日韩三级中文字幕| 国产精品自拍网| 色综合av综合无码综合网站| 青娱乐国产在线| 欧美高清videos性极品| 777电影在线观看| 欧美爱爱网站| 成人黄色大片在线观看| 91精品国产一区二区三区蜜臀 | 日本三级电影网| 欧美日韩免费看片| 好看的亚洲午夜视频在线| 国产精品久久久久毛片软件| 亚洲人成五月天| 裸模一区二区三区免费| 日本一区二区在线观看视频| 99久久亚洲精品日本无码| 日本全棵写真视频在线观看| 欧美成年网站| 国产a区久久久| 精品美女在线播放| 精品国产91亚洲一区二区三区www| 国产探花一区二区三区| aaa国产视频| 欧美一区二区三区少妇| 日韩av黄色在线| 久久人人97超碰com| 亚洲欧美另类自拍| 日韩妆和欧美的一区二区| 怡红院一区二区三区| 伊人色综合久久久天天蜜桃| yellow91字幕网在线| 午夜国产欧美理论在线播放| 亚洲国产日韩av| 欧洲成人性视频| 老司机午夜av| 国产剧情久久久| av网站无病毒在线| 亚洲国产不卡| 午夜视频在线观看一区二区| 欧美中文字幕精品| 在线免费视频一区| 91麻豆视频在线观看| 啦啦啦啦免费高清视频在线观看1| 久久夜色电影| 欧美国产亚洲另类动漫| 欧美美最猛性xxxxxx| 人妻夜夜添夜夜无码av | 亚洲日本va中文字幕| 成人动漫视频在线| 亚洲人成在线播放| 日本免费黄色小视频| 国产精品男女视频| 91免费版在线观看| 欧美日韩国产一区二区三区不卡 | 国产成人精品免费视频| 精品国产乱码久久久久久1区二区| 亚洲免费一级片| 99视频免费在线观看| 国产日韩一区二区三区在线播放| 欧美日韩精品一区二区三区| 国产欧美在线一区二区| 制服丨自拍丨欧美丨动漫丨| 芬兰videosfree性少妇| 成人爽a毛片| 国产精品高潮久久久久无| 97欧美精品一区二区三区| 九色91popny| 视频1区2区3区| 欧美亚洲大片| 91社区在线播放| 久久久一区二区三区| 精品国内亚洲在观看18黄| 久久久噜噜噜www成人网| 国产模特av私拍大尺度| 黄色免费网站在线观看| 免费在线播放第一区高清av| 日韩视频一区二区三区 | 你懂的在线观看视频| 国产 日韩 欧美| 国产精品嫩草99a| 国产精品福利片| 国产人妻人伦精品1国产丝袜| 你懂的网站在线观看网址| 欧美18xxxx| 欧美日韩国产色| 精品欧美国产一区二区三区不卡| 久久久久久免费观看| 在线观看av资源| 一区二区高清| 日韩av在线最新| 男人靠女人免费视频网站| 免费av网站在线播放| 网友自拍亚洲| 国产精品久久久久aaaa| 国产在线日韩在线| 特级片在线观看| 国产私人尤物无码不卡| 免费在线一区观看| 久久视频免费在线播放| 色欲欲www成人网站| 黄色免费视频在线观看| 日韩av免费大片| 日韩欧美在线网站| 日本中文字幕网址| 性欧美极品另类| 红杏成人性视频免费看| 色天天综合久久久久综合片| 天天综合狠狠精品| aaa一区二区| 精品美女一区| 午夜精品久久久久影视| 日本高清不卡三区| 午夜久久久久久久久久| 日韩电影免费观看高清完整版在线观看| 中文字幕一区二区在线播放| 91偷拍精品一区二区三区| 青青操免费在线视频| 欧美午夜大胆人体| 国产午夜精品美女毛片视频| 91在线免费网站| 国产中文字幕视频| 中国字幕a在线看韩国电影| 国产精品美女久久久久久久| 国产精品裸体一区二区三区| 中文字幕日韩第一页| 最新日韩精品| 亚洲美女免费视频| 日本午夜精品一区二区三区| www.色播.com| 亚洲三级av| 在线播放中文字幕一区| 99色精品视频| 美女视频网站在线观看| 伊人久久亚洲美女图片| zzijzzij亚洲日本成熟少妇| 黄色网址在线视频| 日韩av地址| 成人免费视频一区二区| 91人成网站www| 中文天堂在线播放| 青青久久精品| 欧美体内she精视频| aa免费在线观看| 很很鲁在线视频播放影院| 国产精品一二| 欧美在线视频免费观看| 日本熟伦人妇xxxx| 香蕉视频亚洲一级| 色久综合一二码| 中文字幕日韩精品在线观看| 超碰男人的天堂| 视频在线不卡| 久久众筹精品私拍模特| 好吊妞www.84com只有这里才有精品| 国产视频www| 国产精品宾馆| 日韩第一页在线| 亚洲 欧美 日韩在线| 精品久久久久一区二区三区| 91视频在线观看免费| 精品一区二区三区日本| 天天干,天天操,天天射| 经典一区二区| 神马国产精品影院av| 亚洲一级理论片| 在线āv视频| 一区二区三区久久| 丰满的少妇愉情hd高清果冻传媒| 黄色免费的网站| 日本系列欧美系列| 成人免费看片视频| 999国产精品视频免费| 久久男人av| 日韩在线观看免费全集电视剧网站| av资源在线免费观看| 国产精品xx| 在线视频综合导航| 亚洲国产综合av| 无遮挡动作视频在线观看免费入口 | 麻豆一区二区三区在线观看| 在线能看的黄色| 久久国产精品久久w女人spa| 国产精品视频网址| 成人久久久精品国产乱码一区二区| 成人羞羞网站入口| 美乳少妇欧美精品| 日日夜夜操视频| 美女福利一区| 裸体女人亚洲精品一区| 久久国产视频播放| 国内精品国产成人国产三级粉色| 亚洲一品av免费观看| 欧美黑人性猛交xxx| 精品176极品一区| 亚洲高清在线观看| 国产免费无码一区二区视频| 日日夜夜一区| 日韩精品高清在线观看| www.毛片com| 97久久精品一区二区三区的观看方式| 亚洲国产精品久久久| 婷婷色一区二区三区| 成人亚洲欧美| 亚洲第一视频网站| 岛国片在线免费观看| 欧美国产视频| 亚洲人成电影网站色| 精品无码人妻一区二区三区| 午夜视频一区二区在线观看| 中文字幕在线成人| www.国产com| 日本欧美肥老太交大片| 18性欧美xxxⅹ性满足| 成人av一区二区三区在线观看| 欧美激情偷拍| 亚洲一区二区少妇| 国产精品视频福利一区二区| 国产一区不卡在线| 在线观看17c| 亚洲第一成年免费网站| 亚洲高清视频在线| 国产精品九九视频| 日韩一级二级| 国产亚洲精品久久久久久777| 国产成人无码一区二区在线播放| 成人在线电影在线观看视频| 国产91在线视频| 亚洲精品乱码电影在线观看| 精品夜夜嗨av一区二区三区| 在线观看福利一区| 久草网在线视频| 精品国产乱码久久久久久虫虫漫画| 日本黄色大片在线观看| 热三久草你在线| 亚洲欧美一区二区三区四区| youjizz在线视频| 色777狠狠狠综合伊人| 国产综合在线观看视频| 一个人看的www视频免费在线观看| 不卡一区在线观看| 日韩精品―中文字幕| 91高清在线| 91精品一区二区三区久久久久久| 久热这里有精品| 日本道不卡免费一区| 亚洲专区中文字幕| av影音资源| 亚洲猫色日本管| 99久久国产精| 粉嫩久久久久久久极品| 国产91精品久| 国产精品伦一区二区三区级视频频 | 精品夜夜澡人妻无码av| 日韩成人在线看| 日本一本a高清免费不卡| 九九热精品在线视频| 久久久亚洲国产美女国产盗摄| 91视频这里只有精品| 粉嫩av一区二区三区四区五区 | 亚洲AV无码一区二区三区少妇| 久久裸体视频| 麻豆映画在线观看| 国产精品扒开做爽爽爽的视频| 欧美成人aa大片| 国产又粗又猛又爽又| 美女国产精品| 日本欧美视频在线观看| 自由的xxxx在线视频| av在线成人| 国产一区二区日韩| 亚洲精品字幕在线观看| 国产成人精品亚洲午夜麻豆| 网站一区二区三区| 国模私拍国内精品国内av| 4388成人网| jizzjizz丝袜老师| 日韩欧美999| 欧美一级视频免费观看| 久久午夜精品| 国内外成人免费激情视频| 欧美电影免费观看| 欧美性做爰毛片| 成年人福利网站| 欧美日韩亚洲一区二区| 日韩精品一区三区| 国产欧美日韩一级| 丰满少妇久久久| 吞精囗交69激情欧美| 国产91网红主播在线观看| jizzjizz19| 欧美日韩精品三区| 国产免费久久久| 99久久久无码国产精品| 大桥未久恸哭の女教师| 亚洲免费专区| 欧美国产综合视频| 九色porny在线| 久久久成人精品视频| 91在线国产剧情| 精品久久久久国产| 6080午夜伦理| 丁香六月久久综合狠狠色| 又色又爽又黄18网站| 精品精品精品| 欧美lavv| 手机av免费在线| 91黑丝在线观看| 成人网18免费软件大全| 欧美老女人第四色| 99热这里只有精品在线观看| 久久夜色精品国产欧美乱极品| 免费看污片的网站| 最新成人av网站| 男女av免费观看| 97精品久久| 日本最新一区二区三区视频观看| 在线观看三级视频| 日韩美女福利视频| 噼里啪啦在线中文观看| 亚洲色图第一页| 色dvdxxx| 欧美一区午夜视频在线观看| 欧美特黄一级视频| 亚洲手机成人高清视频| 欧美日韩中文视频| 国产精品自拍三区| 国产精久久一区二区三区| 一区二区三区福利| 中文 日韩 欧美| 97人人精品| 国产av麻豆mag剧集| 一区二区三区四区高清视频| 欧美在线一二三区| 成人私拍视频| 国产自产精品| 美女高潮视频在线看| 成人精品视频久久久久| www黄在线观看| 欧美国产一区二区三区| 三级短视频在线| 亚洲片在线资源| 狠狠干天天干| 国产性色av一区二区| 成年女人色毛片免费| 亚洲国产三级网| 一个人看免费www视频有多爽| 日韩欧美区一区二| 一本加勒比hezyo黑人| 日韩视频免费观看高清完整版 | 正在播放木下凛凛xv99| 国产亚洲精品福利| 国产精品久久久免费视频| 91麻豆文化传媒在线观看|