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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

AVR單片機(jī)學(xué)習(xí)(三)開發(fā)基礎(chǔ)知識

作者:zww 1988   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月18日   【字體:

一、AVR開發(fā)工具簡介及開發(fā)環(huán)境的建立

 

  • 軟件開發(fā)工具
  1. 編譯環(huán)境:WinAVR
  2. 下載軟件:MucodeISP
  3. 仿真環(huán)境:AVR Studio
  4. 集成環(huán)境:AVR Studio,可以內(nèi)聯(lián)WinAVR 成為一個(gè)具有編譯、仿真、下載功能的集成環(huán)境
  • 硬件開發(fā)工具
  1. 下載線(并口也有USB接口的,功能是下載程序配置熔絲位)
  2. 仿真器
  3. 學(xué)習(xí)板(或手工焊接的系統(tǒng)板)
  • 工具手冊
  1. WinAVR技術(shù)手冊
  2. ATmega16官方中文版技術(shù)手冊(英文水平好也可以看看英文版)

WinAVR 說明

WinAVR 下載安裝后只用到PN其他刪除就行了、PN我們一般把他作為一個(gè)編輯環(huán)境來使用,保存為.c文件之后他就會(huì)變成一個(gè)有顏色的C文件了,這個(gè)有點(diǎn)就顯示出來了(關(guān)鍵字帶顏色深藍(lán)色和點(diǎn)擊小括號其中另一半就會(huì)高亮很多層括號就有用了)而WinAVR 的編譯功能需要編寫Makefile文件所以對初學(xué)者有難度先不介紹了。而編譯使用AVR Studio來完成就可以了。

下載線作用

一、修改熔絲位   熔絲位可理解為是一個(gè)獨(dú)立于CPU之外的一塊小存儲(chǔ)區(qū)它保存了一些關(guān)鍵的控制位、如:時(shí)鐘源、一些I/O口的特殊作用。

二、向單片機(jī)Flash中下載程序代碼。不具備單步調(diào)試仿真功能。

三、下載線有很多種,最常用的是插在計(jì)算機(jī)并口上的STK200/300 

下載軟件說明

下載軟件有很多、但推薦初學(xué)者使用Mucode isp 優(yōu)點(diǎn)是熔絲位設(shè)置很清晰,不至于設(shè)錯(cuò)而鎖死芯片

 MUcode ISP 如果外部石英晶振高于8MHZ 也選3.0---8MHZ    防止鎖死如果芯片鎖死了,就下載不進(jìn)去程序了。芯片解鎖只能采用高壓編程器,將熔絲位修改回來。然后另一個(gè)比較重要的熔絲位是(共16個(gè)紅點(diǎn)和綠點(diǎn))這個(gè)表示的是ATmega16 的2字節(jié)的熔絲位,上面8個(gè)表示時(shí)鐘電源模式。更改時(shí)鐘的話上面8個(gè)自動(dòng)做出相應(yīng)的變化。變綠=1  表示沒有使能變紅表示使能的紅點(diǎn)按下去就是使能的意思就好在這里。下面8個(gè)最重要的是JTAGEN這個(gè),打開ATmega16 技術(shù)文檔發(fā)現(xiàn)JTAG有個(gè)4個(gè)腳和普通的I/O口是復(fù)用的(TDI TDO TMS TCK )可以配置成普通I/O用也可以當(dāng)JTAG接口用。現(xiàn)在JTAGEN =0 紅色 說明這個(gè)4個(gè)只能當(dāng)JTAG 口用。所以在編程的時(shí)候?qū)@4個(gè)I/O操作就是無效的。點(diǎn)一下變綠了就不使能了,可以當(dāng)普通I/O口用,當(dāng)然這個(gè)時(shí)候JTAG仿真器就連不上了。CKOPT 這個(gè)熔絲位如果使能外部晶振的振幅就會(huì)變得比較大,示波器就能看的出來會(huì)變成5V左右的振幅,如果不使能,晶振就工作與一種低功耗的模式,振幅比較小。初學(xué)不用管。EESAVE表示向Flash編程的時(shí)候是否擦出內(nèi)部的EEPROM ,使能就是不擦出,當(dāng)初學(xué)用不到。

一般我們只管設(shè)置時(shí)鐘(前8個(gè) 選了就不用管了)和JTAGEN (下面8個(gè)其中的一個(gè))就行了。下載線和下載軟件

 



 

  •  AVR Studio 是Atmel公司官方的匯編、下載與仿真軟件可以內(nèi)聯(lián)WinAVR獲得C語言編譯能力。單獨(dú)裝AVR Studio只能編譯匯編語言的代碼,通過JTAGE 工具也具有下載仿真的功能也可以更改熔絲位不過熔絲位不夠直觀。內(nèi)聯(lián)就可以獲得C語言編譯能力了。
  • JTAG ICE 是Atmel公司官方的仿真調(diào)試器,但已經(jīng)被仿制,價(jià)格比官方版本要便宜十倍
  • 可以使用淘寶購買的JTAGEICE 當(dāng)然你買的時(shí)候最要要賣家給發(fā)給你個(gè)AVR Studio 的版本

 裝了AVR Studio 4

創(chuàng)建一個(gè)項(xiàng)目如下圖

點(diǎn)擊下一步


選著JTAGE ICE   ATmega16 點(diǎn)擊完成

 

 

進(jìn)入項(xiàng)目

點(diǎn)擊project 下的配置選項(xiàng) (configuration options)

填入:晶振頻率和代碼優(yōu)化   選項(xiàng)(-00  -01   -02   -03   -0s) 從小到大  0s 最大的優(yōu)化越好編譯出的代碼越小,執(zhí)行速度越快。我們選-00 因?yàn)樵趦?yōu)化的情況下有些時(shí)候會(huì)出現(xiàn)一些極其少見的問題。建議選-00

點(diǎn)擊確定。

 

注意AVR都要包含一個(gè)最為基本的頭文件

#include  //在C:\WinAVR\avr\include\avr 這個(gè)路徑下就有io.h文本文件  可以用PN打開看看

//在AVR Studio下編譯代碼就不如在 WinAVR下編譯好如括號不好用。

 

調(diào)試如下


這樣其實(shí)已經(jīng)通過仿真器已經(jīng)下載到了單片機(jī)里面了,這就提到一個(gè)JTAG的一個(gè)好處,JTAG 一邊是DB9頭一邊就是JTAG仿真接口接單片機(jī)。所以仿真什么結(jié)果實(shí)際運(yùn)行就是什么結(jié)果是一樣的。51不帶JTAG口一般采用偉福仿真器。、它的仿真是一種ROM仿真,仿真時(shí)候使用仿真頭來代替單片機(jī)來進(jìn)行仿真,最后再下載進(jìn)去,所以最后運(yùn)行的結(jié)果不一定是一樣的。

 

 

 

二、計(jì)算機(jī)原理基礎(chǔ)知識講解

  •  數(shù)值就是一位數(shù)字能夠表示的數(shù)的數(shù)量,N進(jìn)制數(shù)的進(jìn)位規(guī)則是“馮N進(jìn)1

        常用的數(shù)制有十進(jìn)制、二進(jìn)制、十六進(jìn)制

        人類有十個(gè)指頭,所以習(xí)慣采用十進(jìn)制

         計(jì)算機(jī)只能識別0和1,采用二進(jìn)制

        為了計(jì)算機(jī)學(xué)中的數(shù)據(jù)寫方便,采用十六進(jìn)制

      位于字節(jié)的概念:

     位(bit):簡寫為b,表示二進(jìn)制數(shù)的一位。

     字節(jié)(byte):簡寫為B,8位為一字節(jié)

    數(shù)值轉(zhuǎn)換工具:Windows自帶的計(jì)算器


1Byte = 8bit

1字節(jié)=2位十六進(jìn)制數(shù)

例如:

0x55 = 0b01010101 = 85

0xa3 = 0b10100011 = 163

  •  存儲(chǔ)器

對于8位單片機(jī),其內(nèi)部存儲(chǔ)器均為8位。

RAM與ROM 模型



 

 這是一個(gè)1K大小的ROM   1024-1=1023 = 0x3FF   1維的模型  每一個(gè)地址對應(yīng)一個(gè)存儲(chǔ)單元,一個(gè)存儲(chǔ)單元房的有數(shù)據(jù)像上圖的0x23  0x55 0x6a  ...0xcf等  存儲(chǔ)的都是8位的二進(jìn)制數(shù)。外部模型如右邊的  主要有2組總線一邊是地址線一邊是數(shù)據(jù)線(其實(shí)還有個(gè)控制總線沒畫出),對這個(gè)RAM讀寫給地址線送一個(gè)相應(yīng)地址通過控制總線表示當(dāng)前是讀模式,相應(yīng)的數(shù)據(jù)線就將對應(yīng)的地址存的內(nèi)容送到數(shù)據(jù)線上。對于ROM也是這樣的。

  • CPU

 

CPU即是為中央處理器

取指令-執(zhí)行



 

 

三、C語言基礎(chǔ)知識講解

  •  變量
  • 運(yùn)算符
  • 語句
  • 函數(shù)
  • 順序語句
  • 選擇語句
  • 循環(huán)語句
  • 數(shù)組和指針

變量:變量就是存儲(chǔ)于RAM或ROM中的數(shù)據(jù)

變量的分類:

單片機(jī)中比較常用的是字符型(char)和整型(int)

實(shí)型(float)變量在單片機(jī)C語言中一般用不到(浮點(diǎn))

運(yùn)算符:類似于數(shù)學(xué)運(yùn)算中的運(yùn)算符號(+ - * / 移位等C語言課本后有附表)

語句:C語言中以分號作為一條語句的結(jié)束

習(xí)慣上每條語句單獨(dú)占用一行,但也可以每行有多條語句, 用分號隔開即可

DDRx   PORTx  都在io.h  里面有定義   當(dāng)然內(nèi)嵌一層(

#elif defined (__AVR_ATmega16__)
include )

在找到iom16.h就有定義地址了

#define DDRC    _SFR_IO8(0x14)
#define DDC0    0
#define DDC1    1
#define DDC2    2
#define DDC3    3
#define DDC4    4
#define DDC5    5
#define DDC6    6
#define DDC7    7

就是說明在 0x14位置  0001 0100  這個(gè)地址保存一個(gè)8位二進(jìn)制數(shù)  沒一位表示一個(gè)I/O口的方向

字符型變量

占用存儲(chǔ)器中的一個(gè)字節(jié)空間,即8位二進(jìn)制數(shù)

取值范圍:0~(2^8 - 1 )即0~255

可以賦值為整數(shù)或ASCII碼

char zifu  =97;

char zifu = 'a'//這種特殊方式是‘a’ 字符就是把ASCII碼值給了ASCII(2)0--255對應(yīng)一個(gè)字符是一種映射關(guān)系單引號告訴編譯器從這個(gè)碼表中取出對應(yīng)的ASCII碼賦值給zifu 查下表得出對應(yīng)就是97,所以這兩條語句是等效的。



前提是先進(jìn)入調(diào)試模式下view下的Watch才能用 不然是灰色的

在Value右鍵可以選十六進(jìn)制和十進(jìn)制 看看  location下顯示的是地址(SRAM)中的位置

整形變量

占用存儲(chǔ)器中的2個(gè)字節(jié),即16位二進(jìn)制數(shù)

有無符號子類型

unsigned int :無符號整型

取值范圍0~(2^16-1)即0~65535

signed int 有符號整形,signed 可以省略。

取值范圍-2^15 ~ (2^15-1)即-32768 ~ 32767

長整型

取值范圍更大的int 子類型

long int :長整形,長度為32位,即4個(gè)字節(jié)

long long int :長度為64位,即8個(gè)字節(jié)

常用的運(yùn)算符

賦值 = 加 + 減 - 乘 * 除 / 括號() 求余%

與& 或| 取反~ 異或^ 左移 << 右移 >>

邏輯與&& 邏輯||

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 91亚洲一区| 天堂在线中文资源 | 日本青青草 | 欧美一区二 | 欧美日韩国产片 | 国产成人免费 | 黄视频在线播放 | 日韩av手机在线观看 | 日韩999| 日本一本草久p | 亚洲精品一区二区三区在线 | 91一区二区三区 | 免费看的毛片 | 成年视频在线观看 | 成年人黄色网址 | 欧美精品乱码视频一二专区 | 国产精品久久久久久中文字 | 一级片在线视频 | 伊人久久久久久久久久 | cao在线| 国产精品免费看 | 四虎看片 | 国产呦小j女精品视频 | 日韩视频免费看 | 日韩欧美网站 | 九九色影院 | 久久久久久99精品久久久 | 国产成人精品一区二区三区在线 | 欧美日韩综合 | 亚洲国产精品久久久久久久 | 久久天天 | 日韩三级精品 | 欧美成人精品欧美一级乱黄 | 男人添女荫道口图片 | 大色av| 欧美天堂 | 亚洲综合在线视频 | 欧美色图一区 | 四级黄色片 | 日韩欧美小视频 | 国产福利在线视频 |