棧是一種具有先入后出特性的數(shù)據(jù)結(jié)構(gòu),前面說(shuō)過(guò),這種特性常常用來(lái)幫住我們“原理返回”或者“保持原樣”。試想,當(dāng)我們第一次來(lái)到一個(gè)陌生的城市,走在陌生的街道上,尋找一個(gè)陌生的目標(biāo),最令我們有安全感的莫過(guò)于仔細(xì)記錄走過(guò)的每一個(gè)街道、穿過(guò)的每一個(gè)路口--這種安全感來(lái)源于潛意識(shí)里“萬(wàn)一找不到目的地就[詳細(xì)]
芯片的發(fā)展趨勢(shì)是存儲(chǔ)容量越來(lái)越大,價(jià)格越來(lái)越便宜。所以我們應(yīng)該用C來(lái)寫(xiě)單片機(jī)程序,不提倡用匯編。每一款單片機(jī)的C語(yǔ)言大部分用法都相同,我個(gè)人的經(jīng)驗(yàn)不同系列的單片機(jī)的c語(yǔ)言的使用只有兩處的寫(xiě)法不同,1)對(duì)一個(gè)I/O口的控制 2)中斷程序。當(dāng)你拿起那厚厚一本的C語(yǔ)言的書(shū)籍,心里面也是沉墊墊的。一本書(shū)下[詳細(xì)]
眾所周知STM32有5個(gè)時(shí)鐘源HSI、HSE、LSI、LSE、PLL,其實(shí)他只有四個(gè),因?yàn)閺纳蠄D中可以看到PLL都是由HSI或HSE提供的。其中,高速時(shí)鐘(HSE和HSI)提供給芯片主體的主時(shí)鐘.低速時(shí)鐘(LSE和LSI)只是提供給芯片中的RTC(實(shí)時(shí)時(shí)鐘)及獨(dú)立看門(mén)狗使用,圖中可以看出高速時(shí)鐘也可以提供給RTC。內(nèi)部時(shí)鐘是在芯片內(nèi)部[詳細(xì)]
似乎軟件架構(gòu),只有純上位機(jī)軟件才有,其實(shí),嵌入式軟件也有架構(gòu)可言,只有好的架構(gòu),才能結(jié)構(gòu)清晰,方便開(kāi)發(fā)和讓系統(tǒng)穩(wěn)定的工作。在有嵌入式操作系統(tǒng)的情況下,可以利用多任務(wù)和信號(hào)量,事件等設(shè)計(jì)嵌入式軟件。但是在沒(méi)有操作系統(tǒng)的裸機(jī)中,更需要有好的架構(gòu)。例如利用事件和狀態(tài)機(jī)模擬實(shí)現(xiàn)多任務(wù),或者[詳細(xì)]
在pic單片機(jī)編程當(dāng)中,會(huì)遇到這個(gè)問(wèn)題,程序已經(jīng)沒(méi)有問(wèn)題,也燒錄成功了,硬件也上電了,但是為什么什么反應(yīng)也沒(méi)有呢?后來(lái)我發(fā)現(xiàn)是我的configuration bits沒(méi)有配置好,以下是我總結(jié)出來(lái),如何讓PIC正常工作的所需作的檢查,前提是代碼沒(méi)有問(wèn)題。1、選擇好芯片;2、設(shè)置好Configuration Bits;3、系統(tǒng)上電;針對(duì)Con[詳細(xì)]
一般認(rèn)為在c中分為這幾個(gè)存儲(chǔ)區(qū)1棧 - 由編譯器自動(dòng)分配釋放2堆 - 一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收3全局區(qū)(靜態(tài)區(qū)),全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。 - 程序[詳細(xì)]
從單片機(jī)上知道,在上電的那一刻,MCU的程序指針PC會(huì)被初始化為上電復(fù)位時(shí)的地址,從哪個(gè)地址處讀取將要執(zhí)行的指令,由此程序在MCU上開(kāi)始執(zhí)行(當(dāng)然在調(diào)用程序的 main函數(shù)之前,還有一系列其他的的初始化要做,如堆棧的初始化,不過(guò)這些我們很少回去修改)。PC在上電時(shí),和MCU差不多,不過(guò)讀取的是BIOS,有它完成[詳細(xì)]
PICC變量及定義1、當(dāng)變量為多字節(jié)數(shù)據(jù)時(shí),PICC按低字節(jié)存放在低地址、高字節(jié)存放在高地址的原則存放變量,并以最低字節(jié)的地址作為該變量的地址。例如int型變量i的值為0X1234,低字節(jié)0x34存放在0X30,高字節(jié)0x12存放在0X31,并以0x30作為變量i的地址。2、單片機(jī)的帶符號(hào)的整數(shù)均以補(bǔ)碼方式存放。對(duì)于二進(jìn)制數(shù)來(lái)說(shuō)[詳細(xì)]
在一個(gè)技術(shù)QQ群中,試著做了一道C的題,感覺(jué)是考察for循環(huán)的執(zhí)行流程.原題: 在C語(yǔ)言中,下列代碼的輸出結(jié)果是 ( ) (選擇一項(xiàng))群里居然有不少人都選了B,那個(gè)提問(wèn)者還一直在問(wèn)正確的結(jié)果。最終的正確結(jié)果是:A.哈哈,好基本的知識(shí)。后來(lái)偶就順手寫(xiě)了一個(gè)代碼,大家做了它可以對(duì)for循環(huán)的運(yùn)算順序就比較清楚[詳細(xì)]
學(xué)習(xí)單片機(jī)最主要的是學(xué)習(xí)寫(xiě)程序的方法,程序的功能千變?nèi)f化,是學(xué)不完的,只有掌握了一定方法,才能用這種方法去寫(xiě)新的程序。以c語(yǔ)言寫(xiě)的單片機(jī)程序?yàn)槔?,程序總是從main程序開(kāi)始,然后順序執(zhí)行到main結(jié)束。由此可知,程序必須包含而且只能包含一個(gè)main程序,也就是常說(shuō)的主程序。main(){主程序的內(nèi)容。。。。[詳細(xì)]
按位或 按位與 按位異或 按位取反 左移右移C語(yǔ)言位運(yùn)算有6種: &, | , ^(亦或), <<(左移), >>(右移)。注意:參與位運(yùn)算的元素必須是int型或者char型,以補(bǔ)碼形式出現(xiàn)。按位與&&運(yùn)算常應(yīng)用于:迅速清零保留指定位判斷奇偶性a & 1 = 1;則a為奇數(shù)b & 1 [詳細(xì)]
1級(jí)優(yōu)先級(jí) 左結(jié)合() 圓括號(hào)[] 下標(biāo)運(yùn)算符-> 指向結(jié)構(gòu)體成員運(yùn)算符. 結(jié)構(gòu)體成員運(yùn)算符2級(jí)優(yōu)先級(jí) 右結(jié)合! 邏輯非運(yùn)算符~ 按位取反運(yùn)算符++ 自增運(yùn)算符-- 自減運(yùn)算符- 負(fù)號(hào)運(yùn)算符(類(lèi)型) 類(lèi)型轉(zhuǎn)換運(yùn)算符* 指針運(yùn)算符& 地址與運(yùn)算符sizeof 長(zhǎng)度運(yùn)算符3級(jí)優(yōu)先級(jí) 左結(jié)合* 乘法運(yùn)算符/ 除法運(yùn)算符% 取余運(yùn)[詳細(xì)]
延時(shí)與中斷出錯(cuò),是單片機(jī)新手在單片機(jī)開(kāi)發(fā)應(yīng)用過(guò)程中,經(jīng)常會(huì)遇到的問(wèn)題,本文匯總整理了包含了MCS-51系列單片機(jī)、MSP430單片機(jī)、C51單片機(jī)、8051F的單片機(jī)、avr單片機(jī)、STC89C52、PIC單片機(jī)…..在內(nèi)的各種單片機(jī)常見(jiàn)的延時(shí)與中斷問(wèn)題及解決方法,希望對(duì)單片機(jī)新手們,有所幫助!擴(kuò)展閱讀:?jiǎn)纹瑱C(jī)延時(shí)程序分析1[詳細(xì)]
用過(guò)前面的學(xué)習(xí),我們已經(jīng)知道,程序中的符號(hào)R7、R6是代表了一個(gè)個(gè)的RAM單元,是用來(lái)放一些數(shù)據(jù)的,下面我們?cè)賮?lái)看一下其它符號(hào)的含義。DELAY: MOV R7,#250 ?。唬?)D1: MOV R6,#250 ;(7)D2: DJNZ R6,D2 &nbs[詳細(xì)]
C程序中可使用不同類(lèi)型的變量來(lái)進(jìn)行延時(shí)設(shè)計(jì)。經(jīng)實(shí)驗(yàn)測(cè)試,使用unsigned char類(lèi)型具有比unsigned int更優(yōu)化的代碼,在使用時(shí)應(yīng)該使用unsigned char作為延時(shí)變量。 以某晶振為12MHz的單片機(jī)為例,晶振為12MHz即一個(gè)機(jī)器周期為1us。擴(kuò)展閱讀:匯編延時(shí)程序算法詳解一. 500ms延時(shí)子程序程序:void delay500ms(void)[詳細(xì)]
應(yīng)用單片機(jī)的時(shí)候,經(jīng)常會(huì)遇到需要短時(shí)間延時(shí)的情況。需要的延時(shí)時(shí)間很短,一般都是幾十到幾百微妙(us)。有時(shí)候還需要很高的精度,比如用單片機(jī)驅(qū)動(dòng)DS18B20的時(shí)候,誤差容許的范圍在十幾u(yù)s以?xún)?nèi),不然很容易出錯(cuò)。這種情況下,用計(jì)時(shí)器往往有點(diǎn)小題大做。而在極端的情況下,計(jì)時(shí)器甚至已經(jīng)全部派上了別的用途。這[詳細(xì)]
在學(xué)單片機(jī)時(shí)我們第一個(gè)例子就是燈的閃爍,那是用延時(shí)程序做的,現(xiàn)在回想起來(lái),這樣做不很恰當(dāng),為什么呢?我們的主程序做了燈的閃爍,就不能再干其它的事了,難道單片機(jī)只能這樣工作嗎?當(dāng)然不是,我們可以用定時(shí)器來(lái)實(shí)現(xiàn)燈的閃爍的功能。例1:查詢(xún)方式ORG 0000HAJMP STARTORG 30HSTART:MOV P1,#0FFH ;關(guān)所 燈MO[詳細(xì)]
計(jì)算機(jī)反復(fù)執(zhí)行一段程序以達(dá)到延時(shí)的目的稱(chēng)為軟件延時(shí),單片機(jī)應(yīng)用程序中經(jīng)常需要短時(shí)間延時(shí),有時(shí)要求很高的精度,網(wǎng)上或書(shū)中雖然有現(xiàn)成的公式可以套用,但在部分算法講解中發(fā)現(xiàn)有錯(cuò)誤之處,而且延時(shí)的具體算法講得并不清楚,相當(dāng)一部分人對(duì)此仍很模糊,授人魚(yú),不如授之以漁,本文將以12MHZ晶振為例,詳細(xì)講解[詳細(xì)]
單片機(jī)延時(shí)程序分析應(yīng)用單片機(jī)的時(shí)候,經(jīng)常會(huì)遇到需要短時(shí)間延時(shí)的情況。需要的延時(shí)時(shí)間很短,一般都是幾十到幾百微妙(us)。有時(shí)候還需要很高的精度,比如用單片機(jī)驅(qū)動(dòng) DS18B20的時(shí)候,誤差容許的范圍在十幾u(yù)s以?xún)?nèi),不然很容易出錯(cuò)。這種情況下,用計(jì)時(shí)器往往有點(diǎn)小題大做。而在極端的情況下,計(jì)時(shí)器甚至已經(jīng)全[詳細(xì)]
實(shí)現(xiàn)延時(shí)通常有兩種方法:一種是硬件延時(shí),要用到定時(shí)器/計(jì)數(shù)器,這種方法可以提高CPU的工作效率,也能做到精確延時(shí);另一種是軟件延時(shí),這種方法主要采用循環(huán)體進(jìn)行。擴(kuò)展閱讀:51單片機(jī)延時(shí)函數(shù)1 使用定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)精確延時(shí)單片機(jī)系統(tǒng)一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產(chǎn)生各種標(biāo)[詳細(xì)]
掃碼關(guān)注我們
0755-82591179
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08
Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved. 粵ICP備14043402號(hào)-4