音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

pic單片機介紹[轉帖]

作者:lag3631 欄目:單片機
續(xù)pic介紹
時鐘和指令周期

從OSCI來的時鐘輸入在內(nèi)部經(jīng)4分頻。產(chǎn)生互不疊加的時佛周期,每4個時鐘周期(θ1,θ2,θ3,θ4)組成一個指令周期。在內(nèi)部、程序計數(shù)內(nèi)對每一個θ1加1,然后從程序存儲器取指令,取出的指令在θ4時放入指令寄存內(nèi)。在下一個θ1利θ4期間指令被執(zhí)行。取指令和執(zhí)行指令采用流水線技術,一個指令周期取指令,下一個指令周期執(zhí)行已取出的指令,同時又取出下一條指令。所以每條指令執(zhí)行,CPU的時間是一個指令周期。當某條指令要改變程序計數(shù)器的 內(nèi)容時(如分支指令),則需要兩個指令周期才能完成。被取出的指 令在執(zhí)行指令周期的θ1時放入指令寄存器,在θ2,θ3,θ4時譯碼 并執(zhí)行指令。在θ2期間讀操作在θ4期間寫操作數(shù)。

存貯器的結構

PIC16C84中有兩個存儲器塊。即程序存儲器和數(shù)據(jù)存儲器。每一塊具有它自己的總線,即可在同一時鐘周期訪問每一塊。數(shù)據(jù)存儲器被進一步分成通用RAM和專用功能寄存器(SFRs)。專 用功能寄存器用于控制外設模式。數(shù)據(jù)存儲器也包含有數(shù)據(jù)EEPROM存 儲器。這個存儲器并不直接映象到數(shù)據(jù)存儲器,而是間接映象的。即由一個間接尋址的指針指明要讀/寫的數(shù)據(jù)EEPROM的地址。64個字節(jié) 的數(shù)據(jù)EEPROM具有的地址是0~3FH。

3-1程序存儲器的結構

PIC16C84具有13位程序計數(shù)器,尋址能力為8K×14位的程序存儲器空間。實際上對于PIC16C84能供使用的只有1K×14位的程序存儲器(地址為0000~ 03FFH)。尋址上述單元,如超過了上述地址范圍, 地址將卷繞。例對20H單元與地址420H,820H,C20H,1020H,1420H, 1820H,1C20H都將訪問到它。系統(tǒng)復位時PC的值為0000H,中斷向量是 0004H。

PC<12:0>

CALL,RETURN 13

RETFIE,RETLW 1級堆棧



8級堆棧

復位地址 0000H

外部中斷向量 0004H

用戶存貯空間 3FFH

1FFFH

圖4-2程序存儲的映象和堆棧

 

3-2數(shù)據(jù)存儲器的結構

數(shù)據(jù)存儲器被分成兩個區(qū)域。第一個是專用功能寄存器(SFR)區(qū)域,第二是通用寄存器區(qū)域(GPR)。SFR控制著器件的操作。數(shù)據(jù)存儲器被分成0塊和1塊。通過程序時狀態(tài)寄存器STATUS中的RP1: RP0位 的設置來選擇0塊(RP1=0,RP0=0)或1塊(RP0=1)。

其中帶有斜線的部分是實際不存在的單元,帶有*號的單元沒有物理寄存。指令MOVWF和MOVF可以把W寄存器的值(W寄存器是器件內(nèi)部的工作 寄存器)傳送到寄存器文件(“F”)中的任何單元,反之也可以。整個數(shù)據(jù)存儲器可以直接尋址或通過文件選擇寄存器(FSR)進行間接尋址。間接尋址要根據(jù)狀態(tài)寄存器的RP1:RP0位的狀態(tài)決定訪問數(shù)據(jù)存 儲器的某一塊,數(shù)據(jù)存儲器的兩塊中都被分成通用寄存器和專用寄存 器。其中每塊低地址單元留作專用寄存器,專用寄存器以上地址的單 元為通用寄存器,它們是靜態(tài)RAM。

1.通用寄存器文件 寄存器文件可以直接尋址或通過FSR間接尋址。所有器件都有一定 數(shù)量的通用寄存器(GPR),它們的數(shù)據(jù)寬度是8位。PIC16C84只有36個字節(jié)的通用寄存器,地址為0CH~ 2FH,對1塊對應的8CH~ AFH的訪問都將實際訪問0CH~ 2FH(地址的高位被忽略)。

文件地址

00 間接尋址地址(*) 間接尋址地址(*) 80

01 TMRO OPTION 81

02 PCL PCL 8 2

03 STATUS STATUS 83

04 FSR FSR 8 4

05 PORTA TRISA 85

06 PORTB TRISB 86

07 87

08 EEDATA EECON1 88

09 EEADR EECON2(*) 89

0A PCLATH PCLATH 8A

0B INTCON INTCON 8B

36個通用寄 映象到 存器(SRAM) 0塊 2F AF 7F FF 0塊 1塊

2.專用功能寄存器

CPU和外設使用專用寄存器以控制器件的操作。專用寄存是靜態(tài)RAM。下面介紹幾個重要的專用寄存器

①狀態(tài)寄存器

狀態(tài)寄存器包含有ALU(復術邏輯運算單元)的算術狀態(tài),復位狀態(tài)和對數(shù)據(jù)存儲器的塊選擇,與任何寄存器一樣,狀態(tài)寄存器可以作為任何指令的目的寄存器。如果狀態(tài)寄存器作為某指令的目的寄存器 ,而那條指令要影響Z、DC,C位的狀態(tài),則禁止寫這三位。圖4-4是 狀態(tài)寄存器及其狀態(tài)。

R/W R/W R/W R R R/W R/W R/W

IRP RP1 RP0 TO PD Z DC C bit7 bit0

其中C是進位位,對ADDWF和ADDLW指令,當這一位為1,表示指令 運算的結果的最高有效位產(chǎn)生了進位輸出。減法指令執(zhí)行的是加第二 操作數(shù)的新碼。對于循環(huán)指令(RRF,RLF),這一位即可以來自于源寄存器的高位,也可以來自于低位。如果這一位為0,表明結果的最高有效位沒有產(chǎn)生進位輸出。對于減法,這一位的極性取反。DC是數(shù)字進位或數(shù)字借位位。當這一位為1時,結果的D3位向D4位有進位,否則無進位。對于減法,這位的極性取反。Z是結果為0標志。當這一位為1時,表明算術運算和邏輯運算的結果為0,否則這一位為0,表明運算結果不為0。PD:低功耗位。當這一位為1表明電源加上按正常供電或執(zhí)行了C LRWDT指令以后,這一位為0表示執(zhí)行了SLEEP指令(即器件進入了低功 耗狀態(tài))。TO超時位。當這一位為1時,表明電源加上,進入了正常供電,且執(zhí)行了CLRWDT和SLEEP指令,這一位為0表明產(chǎn)生了看門狗計時器超時。

RP1:RP0,作為直接尋址的數(shù)據(jù)存儲器的塊選擇位。

RP1:RP=00狀態(tài),選擇0塊(地址00H~7FH)。

RP1:RP0=01狀態(tài),選擇1塊(地址80H~FFH)。

RP1:RP0=10選擇2塊(地址100H~17FH)。

RP1:RP0=11選擇3塊(地址180H~1FFH)。

每塊128個字節(jié),PIC16C84只使用RP0位,RP1編程時設置為0。不允許使用RP1為通用讀/寫位,這可能影響與將來產(chǎn)品的兼容性。IRP寄存器塊選擇位(作為間接尋址),當這一位設置為0,選擇 0.1塊(地址00H~FFH),當這一位為1時,選擇2.3塊(地址100H~1FFH)。PIC16C84不使用IRP位,IRP位在編程時為0。狀態(tài)寄存器中的Z、DC,C位是根據(jù)器件的邏輯來置1或清0。而TO,PD位是不可寫入的。狀態(tài)寄存器作為目的寄存器的指令的結果將有不同的內(nèi)容。例如CLRF STATUS(清0狀態(tài)寄存器)。結果狀態(tài)寄存器的內(nèi)容為000uuluu。其中u表示不改變。只有BCF,BSF,SWAPF和MOVW F這些指令可以用來改變STATUS寄存器的內(nèi)容,因為這幾條指令不影響任何狀態(tài)位。

②OPTION寄存器

OPTION寄存器是可讀,可寫的寄存器,它包含了各種控制位以配 置TMRO/WDT的預分頻器,外部INT中斷,TMRO和在PORTB的微弱上拉。圖4-5是OPTION寄存器各位的功能。 R/W R/W R/W R/W R/W R/W R/ W R/W

RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0 bit7 bit0

其中PS2,PS1,PS0為預分頻器的值的選擇。(與PIC16C6X的規(guī)定 相同)。PSA位是將預分頻器分配給WDT(看門狗計時器,或TMR0)。

TOSE是為TMRO選擇跳變信號

INTEDG是為INT中斷引腳選擇跳變信號。

RBPU用來打開或關閉PORTB內(nèi)部的上拉電阻。

OPTION的所有位的定義同PIC16C6X系列。

③INTCON寄存器

INTCON是可讀可寫的寄存器,它包含了各中斷源允許或禁止中斷 。圖4-6是PIC16C84的INTCON寄存器

R/W R/W R/W R/W R/W R/W R/W R/W

GIE EEIE TOIE INTE RBIF TOIF INTIF RB IF bit7 bit0

其中RBIF是RB端口改變中斷標志位。此位為1,表明RB<7:4>輸入中至少有一位發(fā)生了改變,它必須用軟件清0這一位。否則為0,即 RB<7:4>輸入中沒有改變。 ? ? ? ? ? INTIF是外部中斷標志位。當這一位為1時,表明有外部中斷發(fā)生 ,它必須用軟件將其清0,否則為0,表明沒有外部中斷發(fā)生。

TOIF是TMRO溢出中斷標志。這一位為1,表明TMRO發(fā)生了溢出,必須由軟件將這一位清0,否則為0,表明TMRO沒有溢出發(fā)生

RBIE是RB端口改變中斷的允許或禁止位,設置此位為1,允許中斷,為0禁止。

INTE是INT中斷的允許或禁止位。設置為1允許中斷方式,為0禁止 。

TOIE為TMRO溢出中斷的允許或禁止位。設置為1允許TMRO溢出中斷,否則禁止。

EEIE是EE(電可擦除)的寫完成中斷的允許與禁止位。當設置為1時,允許EE寫完成中斷,否則禁止。

GIE是所有中斷的允許與禁止。設置為1時,允許所有不可屏蔽中斷,為0禁止。

四、PCL和PCLATH

程序計數(shù)器(PC)是13位。低字節(jié)PCL是可讀,可寫的寄存器。PC的高字節(jié)(PCH)不是直接可讀,可寫的。PCLATH(PC latch high) 是作為PC<12:8>的保持寄存器,這幾位的內(nèi)容被傳送到程序計數(shù)器 的高位。當程序計數(shù)器在執(zhí)行CALL,GOTO或寫PCL等指令時,即向PC裝入新的值。PC的高位由PCLATH裝入。

具有8個13位寬度的硬件堆棧。堆?臻g它既不是程序存儲器的一部分,也不是數(shù)據(jù)存儲器的一個部分,堆棧的指針是不可讀/寫的。當執(zhí)行CALL指令或中斷被響應時,整個13位的PC被壓入堆棧。在執(zhí)行RETURN,RETLW,RETFIE等指令時,堆棧被彈出。PUSH(壓入)和POP(彈出)不影響PCLATH。

堆棧是作為循環(huán)緩沖器。當堆棧被壓入38次后,第9次壓入將占據(jù)第一次壓入的位置,第十次壓入將占據(jù)第二次壓入的位置,等等。同樣當堆棧彈出第9次時,與第一次彈出是一樣的。注意,沒有狀態(tài)位來 指明堆棧上溢式下溢的條件。沒有PUSH,POP指令助記符,但CALL,R ETURN,RETLW,RETFIE等指令的執(zhí)行或中斷發(fā)生,將實際發(fā)生壓棧退棧。

4-2程序存儲器的頁

PIC16C84具有1K的程序存儲器,CALL,GOTO指令只有11位的地址范圍,這11位的地址范圍允許分支在2K程序存儲器頁大小的范圍。

為將來PIC16C8X程序存儲器的擴展,必須由另外兩位來說明程序 存儲器的頁。這些頁位來自于PCLATH<4:3>。當執(zhí)行CALL、GOTO指令時,用戶必須確保這些頁位的編程等指向要求的程序存儲器的頁。

如果執(zhí)行CALL指令,整個13位被壓入堆棧。所以對于返回指令不要求 對PCLATH<4:3>位的管理。因為PC的值將會由退棧而獲得。注意:PIC16C84忽略了PCLAT
2樓: >>參與討論
AIRWILL
呵呵,夠詳細嘛
 
3樓: >>參與討論
Bingoes
不錯,最近剛好有個手持設備的項目要做
要求要有A/D功能,2節(jié)7號電池供電,不過只有13個IO口
可能少了點,另外程序空間只有1K也可能會少了點,最后
有個關鍵性的問題,價格是多少?

4樓: >>參與討論
lag3631
我只是介紹,不是推銷
我只是介紹pic單片機,不是推銷的
只是自己感興趣就和大家分享一下

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
MedWin中,程序經(jīng)編譯/匯編后出了3個警告后怎樣設置才能產(chǎn)生代碼.
PC指針問題?
請教一問題,謝謝指教
如何選擇編程器
不用移植的通用系統(tǒng),可用于 51 ARM 等。。
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號