久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7008|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

MCS51單片機(jī)學(xué)習(xí)經(jīng)驗(yàn)[轉(zhuǎn)帖]新手進(jìn)階篇

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3262 發(fā)表于 2009-8-12 23:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

第一次寫(xiě)這種東西,不好的地方大家多補(bǔ)充...........

    目的:參加了個(gè)群,里面菜鳥(niǎo)好多,這沒(méi)什么,高手都是曾經(jīng)的菜鳥(niǎo),這里只是給個(gè)學(xué)習(xí)的提綱,大家共同提高.還希望大家不要罵我,汗~~

    適用人群:8051系列單片機(jī)的初學(xué)者,有一點(diǎn)使用經(jīng)驗(yàn)的人群,如果你是高手就請(qǐng)多多指教咯,俺們一起完善吧,希望能給新手帶來(lái)指引。

    提到的范圍:8051系列硬件,擴(kuò)展接口,匯編,C51編程什么的,反應(yīng)好的話就貼點(diǎn)做過(guò)的項(xiàng)目和同志們探討下.....注意,這只是學(xué)習(xí)要注意的地方,絕對(duì)不是教科書(shū),千萬(wàn)不要光看這個(gè),沒(méi)什么用的.
   
    關(guān)于更新:本人不是無(wú)業(yè)游民,因此時(shí)間有限,有精力的話會(huì)努力更新的,有時(shí)候忙起來(lái)沒(méi)空照顧我的電子工程師博客,還請(qǐng)大大們不要見(jiàn)怪.以后有空的話會(huì)寫(xiě)些16位的以及高級(jí)C編程方面的東西,看時(shí)間吧

    經(jīng)驗(yàn)之談:要學(xué)習(xí)單片機(jī),最好的方法是做項(xiàng)目,先看些基本的書(shū)籍,不要太精細(xì),然后找個(gè)不太復(fù)雜的已經(jīng)做好的的項(xiàng)目,拿來(lái)仔細(xì)看,這樣能夠在一個(gè)月之內(nèi)得到很大的提高,至少比在課堂學(xué)習(xí)一學(xué)期要好得多.然后接觸些復(fù)雜的工程快速提高自己.為什么要做項(xiàng)目,就是在實(shí)踐中找問(wèn)題,遇到問(wèn)題不要慌,有了問(wèn)題是好事,現(xiàn)在網(wǎng)絡(luò)非常發(fā)達(dá),相關(guān)的資料也非常多,可以去找,去論壇上問(wèn),QQ群里問(wèn),要注意搜集積累資料,這里推薦一個(gè)不錯(cuò)的論壇:電子工程論壇:http://bbs.eetzone.com .很多資料下載,基本沒(méi)有什么無(wú)聊的帖子夾在里面,我比較喜歡,人氣還很不錯(cuò)。還有就是多交些志同道合的朋友,切忌一個(gè)人埋頭苦干。

    好了,廢話不多說(shuō),讓我們開(kāi)始正題

一、硬件結(jié)構(gòu)

    很多人不喜歡看這章,其實(shí)這是很重要的地方,其他知識(shí)都是在這里的基礎(chǔ)上產(chǎn)生的,尤其是新人,千萬(wàn)千萬(wàn)要重視硬件,別以為C語(yǔ)言真的可以獨(dú)立于硬件,那樣不可能做個(gè)頂級(jí)的C_er.

    別的不說(shuō),引腳圖到處都有,自己去看,強(qiáng)調(diào)下存儲(chǔ)器好了,這里還比較重要.51系列的單片機(jī)里分ROM和RAM,ROM有4KB,主要用來(lái)放程序代碼以及一些不變的常數(shù)和表格什么的,類似于PC匯編中的CODE段的作用.有幾個(gè)比較特殊的地方強(qiáng)調(diào)下,ROM中有7個(gè)單元是有特殊用途的,編寫(xiě)匯編的時(shí)候要注意下,一個(gè)是0000H,系統(tǒng)復(fù)位后是從這里開(kāi)始執(zhí)行的,一般在這里加個(gè)強(qiáng)行跳轉(zhuǎn)指令,跳到自己的主程序入口地址,然后是幾個(gè)中斷源地址,可以用:8n+3    n=0,1,2,3,4來(lái)計(jì)算這幾個(gè)中斷地址,往往是在這里添加的無(wú)條件跳轉(zhuǎn)指令,跳到自己些的中斷程序入口.可能這里有些人不大明白,沒(méi)關(guān)系,后面C51編程時(shí)要詳細(xì)講到.

    片內(nèi) RAM共計(jì)128Byte,是由用戶自己定義并使用的,運(yùn)算中的變量,堆棧什么的就放在這里了,00H到1FH為工作寄存器組區(qū),分為4個(gè)組,每組有8個(gè)單元,都以R0~R7表示,匯編中可以直接用了,很方便,要換寄存器組的話就更改RSW單元好了.在20H到2FH的區(qū)域中還可以進(jìn)行位尋址(注意:這里很容易被忽視,一定要知道這個(gè)),這里解釋下,可能有些同志不太清楚了,位也就是一個(gè)字節(jié)中的組成部分,一個(gè)字節(jié)有8位,OK,位操作就是指以其中的一個(gè)位進(jìn)行操作,什么把1變成0.0變成1什么的,呵呵,什么狀態(tài)標(biāo)志都在這里咯.后面的直到7FH都是數(shù)據(jù)緩沖區(qū),隨便用了.

   80H到FFH(高128個(gè)Byte)又叫SFR,這里是用于控制單片機(jī),管理片內(nèi)算術(shù)邏輯部件,并行I/O口,串行I/O口,定時(shí)器/計(jì)數(shù)器,中斷系統(tǒng)等功能模塊.你可以更改其中的值,但不能移作它用.具體的東西自己去看教材好了,上面全有.不明白沒(méi)關(guān)系,做幾個(gè)項(xiàng)目,什么都明白了.里面也有可以按位操作的,至于具體用途看書(shū),嘿嘿

累了,待續(xù)..........

二,1、單片機(jī)編程技巧--功能強(qiáng)大的時(shí)鐘中斷
單片機(jī)程序設(shè)計(jì)中,設(shè)置一個(gè)好的時(shí)鐘中斷,將能使一個(gè)CPU發(fā)揮兩個(gè)CPU的功效,大大方便和簡(jiǎn)化程序的編制,提高系統(tǒng)的效率與可操作性。我們可以把一些例行的及需要定時(shí)執(zhí)行的程序放在時(shí)鐘中斷中,還可以利用時(shí)鐘中斷協(xié)助主程序完成定時(shí)、延時(shí)等操作。
  下面以6MHz時(shí)鐘的AT89C51系統(tǒng)為例,說(shuō)明時(shí)鐘中斷的應(yīng)用。
  定時(shí)器初值與中斷周期 時(shí)鐘中斷無(wú)需過(guò)于頻繁,一般取20mS(50Hz)即可。如需要百分之一秒的時(shí)基信號(hào),可取10mS(100Hz)。這里取20mS,用定時(shí)器T0工作于16位定時(shí)器方式(方式1)。T0的工作方式為:每過(guò)一個(gè)機(jī)器周期自動(dòng)加1,當(dāng)計(jì)滿0FFFFh,要溢出時(shí),便會(huì)產(chǎn)生中斷,并由硬件設(shè)置相應(yīng)的標(biāo)志位供軟件查詢。即中斷時(shí)比啟動(dòng)時(shí)經(jīng)過(guò)了N+1個(gè)機(jī)器周期。所以,我們只要在T0中預(yù)先存入一個(gè)比滿值0FFFFh小N的數(shù),然后啟動(dòng)定時(shí)器,便會(huì)在N個(gè)機(jī)器周期后產(chǎn)生中斷。這個(gè)值便是所謂的“初值”。下面計(jì)算我們需要的初值:時(shí)鐘為6MHz,12個(gè)時(shí)鐘周期為一個(gè)機(jī)器周期,20mS中有10000個(gè)機(jī)器周期。(10000)10=(2710)16,則0FFFFh-2710h+1=0D8F0h。由于響應(yīng)中斷、保護(hù)現(xiàn)場(chǎng)及重裝初值還需要7~8個(gè)機(jī)器周期,把這個(gè)值再加上7,即T0應(yīng)裝入的初值是0D8F7h。每次中斷進(jìn)入后,先把A及PSW的值壓入堆棧,然后即把0D8F7h裝入T0。
  設(shè)置一個(gè)單元,每次中斷加1 我們可以取內(nèi)部RAM中一個(gè)單元,取名為INCPI(Increase Per Interrupt),在中斷中,裝完T0初值后,用INC INCPI指令將其加一。從這個(gè)單元中,無(wú)論中斷程序還是主程序,都可以從中獲得20mS的1~256之間任意整數(shù)倍的信號(hào)。例如:有一段向數(shù)碼管送顯的程序,需要每0.5秒執(zhí)行一次以便刷新顯示器,便可以設(shè)一單元(稱為等待單元)W_DISP,用/MOV A,INCPI/ADD A,#25/MOV W_DISP,A/語(yǔ)句讓其比當(dāng)前的INCPI值大25,然后在每次中斷中檢查是否于INCPI值相等。若相等,說(shuō)明已過(guò)了25個(gè)中斷周期,便執(zhí)行送顯程序,并且讓W(xué)_DISP再加上25,等待下個(gè)0.5秒。我們可以設(shè)置多個(gè)等待單元,以便取出多個(gè)不同的時(shí)基信號(hào)。讓中斷程序在每次中斷時(shí)依次查詢各個(gè)等待單元是否與INCPI相等,若相等,則執(zhí)行相應(yīng)的處理,并重新設(shè)置該等待單元的值,否則跳過(guò)。例如:用0.5秒信號(hào)刷新或閃爍顯示器,用1秒信號(hào)產(chǎn)生實(shí)時(shí)時(shí)鐘,或輸出一定頻率的方波,以一定間隔查詢輸入設(shè)備等。
  在中斷中讀鍵 通常,我們?cè)谥鞒绦蛑凶x鍵盤(pán),步驟為:掃描鍵盤(pán),若有鍵按下,則延時(shí)幾十毫秒去抖動(dòng),再次確認(rèn)此鍵確實(shí)按下,然后處理該鍵對(duì)應(yīng)的工作,完成后再次重上述步驟。但這有兩點(diǎn)不足:1.處理相應(yīng)工作時(shí)無(wú)法鎖存按鍵的輸入,即可能漏鍵。2.延時(shí)去抖時(shí)CPU無(wú)法做其它事情,效率不高。如果把讀鍵放入時(shí)鐘中斷中,則可避免上述不足。方法為:如果兩次相鄰的中斷中都讀到同一個(gè)鍵按下,則這個(gè)鍵是有效的(達(dá)到了去抖目的),并將其鎖存到先入先出(隊(duì)列)的鍵盤(pán)緩沖區(qū),等主程序來(lái)處理。這樣,主程序處理按鍵的同時(shí),仍可響應(yīng)鍵盤(pán)的輸入。緩沖區(qū)深度通常可設(shè)為8級(jí),若鎖存的鍵數(shù)多于8個(gè),則忽略新的按鍵,并報(bào)警提示用戶新的按鍵將無(wú)效。若鍵盤(pán)緩沖隊(duì)列停滯的時(shí)間大大長(zhǎng)于主程序處理按鍵所需要的最大時(shí)間,說(shuō)明主程序已出錯(cuò)或跑飛,可以在中斷用指令將系統(tǒng)復(fù)位,起到了看門(mén)狗的目的。
  主程序中的延時(shí) 由于有常開(kāi)的時(shí)鐘中斷,所以當(dāng)主程序中有需要時(shí)間較短、精度較高的延時(shí)時(shí),應(yīng)暫時(shí)把時(shí)鐘中斷關(guān)閉。而程序中需要時(shí)間較長(zhǎng)、精度不高的延時(shí)時(shí),便可仿照下需的寫(xiě)法,避免多層嵌套的循環(huán)延時(shí)。
  例:在P1.1輸出1秒的高電平脈沖
  MOV  A,INCPI
  INC  A
  CJNE  A,INCPI$  ;等待一次中斷處理完成
  SETB  P1.1    ;設(shè)P1.1為H,脈沖開(kāi)始
  ADD  A,#50    ;50個(gè)20mS為1秒
  CJNE  A,INCPI,$  ;等中斷將INCPI加一50次
  CLR  P1.1    ;設(shè)P1.1為L(zhǎng),脈沖結(jié)束
  結(jié)束語(yǔ):從上看出,要靈活地應(yīng)用時(shí)鐘中斷,將任務(wù)合理分配給中斷和主程序,并且二者要分工明確,接口簡(jiǎn)單。這其中的技巧還需要大家在實(shí)踐中多多摸索與體會(huì)。另外要注意:應(yīng)盡量縮短中斷處理程序的執(zhí)行時(shí)間,更不要長(zhǎng)于20mS。

[此貼子已經(jīng)被作者于2009-8-12 23:54:11編輯過(guò)]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:14394 發(fā)表于 2009-8-13 07:25 | 只看該作者

贊!!!!!!!!!!!!

回復(fù)

使用道具 舉報(bào)

板凳
ID:16396 發(fā)表于 2009-8-19 16:35 | 只看該作者
學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

地板
ID:16513 發(fā)表于 2009-8-24 16:26 | 只看該作者

說(shuō)的很對(duì)啊!

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 欧美二级 | 99re视频在线 | 国产综合在线视频 | 国产精品久久午夜夜伦鲁鲁 | 91手机精品视频 | 久久亚洲高清 | 日韩有码一区 | 天堂男人av | 国产成人精品免费视频大全最热 | 91大神在线资源观看无广告 | 国产成都精品91一区二区三 | 中文字幕精品一区久久久久 | 欧美高清视频一区 | 亚洲精品永久免费 | 色av一区二区 | 成人免费xxxxx在线视频 | 日韩欧美在线视频 | 久久久久久久久综合 | 91亚洲欧美 | 免费a级毛片在线播放 | 久久综合av | 99精品欧美一区二区三区综合在线 | 欧美日韩综合一区 | 日韩精品一区二区三区在线播放 | 一区二区三区视频在线观看 | 国产高清性xxxxxxxx | 一级毛片免费完整视频 | 欧美中文字幕一区二区三区 | 日韩欧美一级片 | 一区二区av | 欧美综合一区二区 | 在线一区| 久久久91 | 国产一区欧美 | 久久久久久91香蕉国产 | 国产成人精品免高潮在线观看 | 国产做a爱免费视频 | 99在线视频观看 | 一区二区三区在线免费观看 | 国产一级久久久久 |