91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

51單片機進階學習計劃

GReq_mcu168 ? 來源:CSDN ? 2020-06-05 16:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

進階學習計劃:

一:最小系統能夠運行起來的必要條件。

1.電源 2.晶振3.復位電路

二:對單片機任意IO口的隨意操作

1.輸出控制電平高低2.輸出檢測電平高低。

三:單片機特殊功能應用

1:定時器:重點掌握最常用的方式2

2:中斷:外部中斷、定時器中斷、串口中斷

3:串口通信:單片機之間、單片機與計算機間

(在此不詳細介紹單片機C語言)

一:最小系統運行條件

1.電源 2.晶振3.復位電路 詳細資料參見導論中的最小系統電路圖

二:普通I/O口的操作

1:輸出高低電平 output

操作:用程序給輸出寄存器P0/P1/P2/P3賦值,1/0實現高低電平的控制

應用:這種高低可實現一些對外部設備的控制,比如led,lcd····,也可加上電流驅動或繼電器或可控硅等器件實現對大型用電器的控制

實例:I/O操作最簡單的實例就是流水燈,流水燈程序參見:http://blog.csdn.net/metalseed/article/details/8196727

2:檢測電平高低 input

操作:先給寄存器P1/P2/P3賦值0xff,然后用 if 語句來進行判斷

應用:可用來讀取外部外部信息實現模擬通信,獲得傳感器數據,按鍵采集等

實例:矩陣鍵盤的掃描代碼:http://blog.csdn.net/metalseed/article/details/8296590

數碼管顯示:http://blog.csdn.net/metalseed/article/details/8537554

PS: P0為三態(高電平,低電平,高阻態) P1,P2,P3為準雙向IO口(內部有上拉電阻,做輸入用時,先寫1)

三:單片機特殊功能應用

這是進階的核心內容,單片機的特殊功能全部集中在P3口,這些引腳具有多功能,可通過寄存器配置(關于寄存器,日后補上詳細描述,寄存器理解屬于高階思想,在此先講操作)來確定啟用第幾功能。

首先附上P3第二功能定義

P3第二功能定義:

P3.0:RXD串行口輸入

P3.1:TXD串行口輸出

P3.2:INT0外部中斷0輸入

P3.3:INT1外部中斷1輸入

P3.4:T0定時器0外部輸入

P3.5:T1定時器1外部輸入

P3.6:WR外部寫控制

P3.7:RD外部讀控制

1:中斷

中斷的概念:

中斷其實很容易理解,這樣來說吧,比如說你在做A事,但是突然間來了你想起來了更重要的B事,所以你馬上去做B事了,做完之后再回來繼續做A事,這個就是中斷!在程序里面也是一樣的!中斷系統里面有五個中斷,外部中斷0和1,定時器/計數器中斷0/1,串行口中斷!

舉個例子你可能會容易懂點,定時中斷:比如你定時1ms,主程序在運行,每當1ms時間到后,就跑到定時中斷子程序 里面執行,執行完后再回到主程序。。。中斷程序是1ms進去一次

后面中斷講解太過系統,不易理解,日后補上簡潔易懂的,請親見諒.....。。

中斷data請移步至:http://wenku.baidu.com/view/4f3738f64693daef5ef73da6.html

中斷實例:

超聲波外部中斷 + 串口通信 將測出的距離通過串口發送

http://blog.csdn.net/metalseed/article/details/8764348

2:定時器

定時器簡介

定時器及計數器的應用,比 I / O 功能稍微高級點,可實現更為復雜的功能。

顧名思義,定時器可實現延時操作,計數器則可實現計數功能(這兩者都靠中斷實現)。

兩者實質上都是加一計數器(16位),由高8位和低8位兩個寄存器組成,當所有位為1即定時器溢出時,便觸發中斷。

PS:51內部有兩個定時器:定時器0,定時器1,定時模式加1的周期為一個機器周期 12M晶振的機器周期為1us

應用定時器,需要操作響應的寄存器。

主要涉及三個:1:中斷允許寄存器IE (可位尋址,所以能直接操作EA,ET0, ET1,)

2:TMOD 是定時/計數的工作方式寄存器,確定工作方式和功能

3:TCON是控制寄存器,控制T0,T1的啟動和停止及設置溢出標志。

操作方法:

step 1:配置IE寄存器,讓定時器使能(使能即能被應用,可假象為函數的聲明)。

step 2:配置TMOD寄存器,來確定定時器的工作方式,同時配置TH,TL寄存器來對定時器裝入初值

step 3:配置TCON寄存器,啟動或停止定時器(因為定時器一旦啟用,就不停加1,直到TH,TL所有位為1時溢出,跳入中斷函數,所以在啟用前,要寫好中斷函數,中斷函數寫法demo里有說明)

這里所說的配置,即給寄存器賦值,例如:TMOD = 0X0f;

總而言之:要使用定時器或者計數器需要依次給如下寄存器賦值:IE,TOMD,TH,TL, TCON,具體要賦什么值,參加下面的寄存器位含義說明;

寄存器說明及定時器工作方式:

點擊打開特殊功能寄存器詳細說明

代碼示例:

1:最直白的定時器工作方式1演示,每隔50MS P0取反

[java] view plain copy print?

#include

void main()

{

EA = ET0 = 1; /*step 1 : 中斷允許*/

TMOD = 0x01; /*step 2 : 模式配置*/

TH0 = (65536 - 50000) / 256; /*裝初值*/

TL0 = (65536 - 50000) % 256; /*裝初值*/

TR0 = 1; /*step 3 : 啟動*/

while(1)

{

/*Hello World*/

}

}

/*timer0為函數名,隨意寫,后面的interrupt X,X是相應中斷的編號,5個中斷源各有固定編號*/

/*using x 表示占用ram中的X寄存器(0-3),C語言中IDE自動分配不用寫 */

void timer0() interrupt 1 using 1

{

/*重裝初值*/

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

/*operation*/

P0 = ~P0;

}

2:高級模板

待補~

3:串口通信

接口RS232C

RS-422A用于全雙工,而RS-485則用于半雙工(比232距離遠)

需配置的寄存器 :SCON PCON IE

SCON是一個特殊功能寄存器,用以設定串行口的工作方式、接收/發送控制以及設置狀態標志:

SM0和SM1為工作方式選擇位,可選擇四種工作方式

SM2,多機通信控制位,主要用于方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否激活RI(RB8=0時不激活RI,收到的信息丟棄;RB8=1時收到的數據進入SBUF,并激活RI,進而在中斷服務中將數據從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數據進入SBUF,并激活RI(即此時RB8不具有控制RI激活的功能)。通過控制SM2,可以實現多機通信。

在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。

REN,允許串行接收位。由軟件置REN=1,則啟動串行口接收數據;若軟件置REN=0,則禁止接收。

TB8,在方式2或方式3中,是發送數據的第九位,可以用軟件規定其作用。可以用作數據的奇偶校驗位,或在多機通信中,作為地址幀/數據幀的標志位。

在方式0和方式1中,該位未用。

RB8,在方式2或方式3中,是接收到數據的第九位,作為奇偶校驗位或地址幀/數據幀的標志位。在方式1時,若SM2=0,則RB8是接收到的停止位。

TI,發送中斷標志位。在方式0時,當串行發送第8位數據結束時,或在其它方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。

RI,接收中斷標志位。在方式0時,當串行接收第8位數據結束時,或在其它方式,串行接收停止位的中間時,由內部硬件使RI置1,向CPU發中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。

PCON中只有一位SMOD與串行口工作有關:

SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關,當SMOD=1時,波特率提高一倍。復位時,SMOD=0。

波特率的計算

方式0的波特率= fosc/12

方式2的波特率=(2SMOD/64)·fosc

方式1的波特率=(2SMOD/32)·(T1溢出率)

方式3的波特率=(2SMOD/32)·(T1溢出率)

當T1作為波特率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決于TH1中的計數值。

T1溢出率=fosc /{12×[256-(TH1)]}

操作步驟:

1:確定串口工作方式 (配置SCON 可位尋址)

2:根據1確定的方式,看是否需要手動設置波特率 (TMODE,TH TL)

3:設置波特率后啟動(REN, TR)

4:如果使用中斷,開中斷并寫函數(EA = ES = 1, void ser() interrupt 4 )

串口通信模板:

http://blog.csdn.net/metalseed/article/details/8579997

點對點通信:

多機通信:

1、硬件連接

單片機構成的多機系統常采用總線型主從式結構。所謂主從式,即在數個單片機中,有一個是主機,其余的是從機,從機要服從主機的調度、支配。80C51單片機的串行口方式2和方式3適于這種主從式的通信結構。當然采用不同的通信標準時,還需進行相應的電平轉換,有時還要對信號進行光電隔離。在實際的多機應用系統中,常采用RS-485串行標準總線進行數據傳輸。

2、通信協議

所有從機的SM2位置1,處于接收地址幀狀態。

主機發送一地址幀,其中8位是地址,第9位為地址/數據的區分標志,該位置1表示該幀為地址幀。

所有從機收到地址幀后,都將接收的地址與本機的地址比較。對于地址相符的從機,使自己的SM2位置0(以接收主機隨后發來的數據幀),并把本站地址發回主機作為應答;對于地址不符的從機,仍保持SM2=1,對主機隨后發來的數據幀不予理睬。

從機發送數據結束后,要發送一幀校驗和,并置第9位(TB8)為1,作為從機數據傳送結束的標志。

主機接收數據時先判斷數據接收標志(RB8),若RB8=1,表示數據傳送結束,并比較此幀校驗和,若正確則回送正確信號00H,此信號命令該從機復位(即重新等待地址幀);若校驗和出錯,則發送0FFH,命令該從機重發數據。若接收幀的RB8=0,則存數據到緩沖區,并準備接收下幀信息。

主機收到從機應答地址后,確認地址是否相符,如果地址不符,發復位信號(數據幀中TB8=1);如果地址相符,則清TB8,開始發送數據。

從機收到復位命令后回到監聽地址狀態(SM2=1)。否則開始接收數據和命令。

3、應用程序

主機發送的地址聯絡信號為:00H,01H,02H ,… …(即從機設備地址),地址FFH為命令各從機復位,即恢復SM2=1。

主機命令編碼為:01H,主機命令從機接收數據;02H,主機命令從機發送數據。其它都按02H對待。

RRDY=1:表示從機準備好接收。

TRDY=1:表示從機準備好發送。

ERR=1:表示從機接收的命令是非法的。

程序分為主機程序和從機程序。約定一次傳遞數據為16個字節,以01H地址的從機為例。

寄存器數據手冊:

單片機細節:

定義的變量存儲在RAM中,對寄存器賦值時,單片機內部通過數據交換實現。

復位時 P0,P1,P2,P3寄存器全為0xff,其他各位0x00;

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6067

    文章

    44973

    瀏覽量

    650109
  • 寄存器
    +關注

    關注

    31

    文章

    5433

    瀏覽量

    124344
  • 定時器
    +關注

    關注

    23

    文章

    3298

    瀏覽量

    118796

原文標題:51單片機進階,處于瓶頸的你必看!

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    AT89C51 單片機中文資料

    電子發燒友網站提供《AT89C51 單片機中文資料.pdf》資料免費下載
    發表于 06-24 15:29 ?0次下載

    51單片機筆記(建議收藏!)

    簡單匯總下51單片機的資源和學習方法 一頁紙講清單片機 也許有人問:有沒有那么簡單呀? 當然不會那么簡單啦,首先你要把書讀薄,然后再把書讀后,最后把書放進自己腦子里,形成自己的一套思
    發表于 05-21 17:24

    51單片機模塊化編程設計與實例要點分析

    51單片機模塊化開發教程
    發表于 02-24 16:40 ?2次下載

    單片機學習—C51源代碼和Proteus仿真文件

    單片機學習—C51源代碼和Proteus仿真文件.zip, 有各種例子
    發表于 02-10 13:46 ?1次下載

    51單片機pwm和spwm

    51單片機pwm
    發表于 01-08 15:54 ?3次下載

    51單片機溫度報警器

    電子發燒友網站提供《51單片機溫度報警器.zip》資料免費下載
    發表于 12-30 14:16 ?3次下載

    51單片機核心板原理圖

    51單片機核心板原理圖
    發表于 12-16 11:30 ?4次下載

    51單片機中為什么很少出現printf的身影

    51單片機中為什么很少出現 printf 的身影?是用不了嗎? 不是的,51單片機可以用 printf,只是不建議使用。 平時我們在操作系統上寫C語言代碼,使用 printf 可以把數
    的頭像 發表于 12-03 10:46 ?1371次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>中為什么很少出現printf的身影

    基于51單片機的手動數字時鐘

    具體實現功能由51單片機+8位共陰數碼管+獨立按鍵構成。具體功能:(1)利用數碼管顯示時分秒,顯示格式為“時-分-秒”;(2)利用6個按鍵控制時、分、秒,設定好后自動開始時鐘顯示;(3)設置秒復位
    的頭像 發表于 10-22 14:12 ?632次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的手動數字時鐘

    基于51單片機的遙控開關仿真(雙機通信)

    具體實現功能由51單片機+獨立按鍵+繼電器+LED燈等構成。實現功能:(1)本仿真設計的是一款遙控開關,采用51單片機進行遙控器與主機的設計;(2)遙控器由
    的頭像 發表于 10-22 14:12 ?822次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的遙控開關仿真(雙機通信)

    如何實現51單片機與PC的串行通信

    51單片機與PC的串行通信是一種常見的通信方式,它允許單片機通過串行接口與PC進行數據交換。這種通信方式在嵌入式系統、工業控制、物聯網等
    的頭像 發表于 10-21 11:35 ?2656次閱讀

    51單片機驅動

    電子發燒友網站提供《51單片機驅動.exe》資料免費下載
    發表于 09-20 11:46 ?5次下載

    51單片機晶振的問題總結

    電子發燒友網站提供《51單片機晶振的問題總結.doc》資料免費下載
    發表于 09-07 09:32 ?0次下載

    stm32和51單片機的區別是什么

    架構差異: STM32是基于ARM Cortex-M系列內核的32位微控制器,具有更高效的處理能力和更豐富的外設。 51單片機是基于8051內核的8位微控制器,處理能力相對較低,外設也相對有限
    的頭像 發表于 09-02 09:33 ?1667次閱讀

    51單片機燒錄軟件怎么用

    準備工作 確保您已經安裝了51單片機燒錄軟件,如Keil、IAR等。 準備好51單片機開發板和燒錄器,如STC-ISP等。 確保您的計算機已經安裝了相應的驅動程序。 安裝燒錄軟件 從官
    的頭像 發表于 08-22 09:26 ?2827次閱讀
    主站蜘蛛池模板: 快播久久 | 精品视频网站 | 中文字幕1区 | 国内精品免费视频自在线 | 国产成人高清精品免费5388密 | 欧美成人激情在线 | 特级一级黄色片 | 欧美美女一区二区三区 | 午夜剧场黄| 婷婷激情狠狠综合五月 | 五月天婷婷色图 | 天天干天天射天天舔 | 中文字幕亚洲综合久久2 | 免费观看视频在线观看 | 欧美猛交xxx呻吟 | xxxxxx日本人免费 | 97爱sese| 男人j进女人j免费视频视频 | 亚洲午夜久久影院 | 天天躁日日躁成人字幕aⅴ 天天躁夜夜躁 | 成年网站在线看 | 色综合天天操 | 亚洲国产毛片aaaaa无费看 | 综合激情六月 | 九九精品免费观看在线 | 欧美日韩精品乱国产538 | 色综合88 | 欧洲不卡一卡2卡三卡4卡网站 | 午夜一级免费视频 | 日韩视频高清 | 99久久免费精品国产免费高清 | 青草国内精品视频在线观看 | 国产午夜a理论毛片在线影院 | 99久久99久久精品免费看子伦 | videosgratis乱色欧美野外 | 男人天堂黄色 | 天天干天天射天天插 | 日本免费黄网站 | 高清一区二区三区四区五区 | 性色免费视频 | 精品卡1卡2卡三卡免费网站视频 |