日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] 一、前言之前花了一點時間閱讀了編譯器sdcc的man文檔,算是對這款交叉編譯器有了基本的了解。但要寫重新寫單片機程序,還要對相應的知識做進一步的復習。下面我將閱讀芯片的datasheet和application gui

一、前言

之前花了一點時間閱讀了編譯器sdcc的man文檔,算是對這款交叉編譯器有了基本的了解。但要寫重新寫單片機程序,還要對相應的知識做進一步的復習。下面我將閱讀芯片的datasheet和application guide,結(jié)合一些實際的應用,對單片機的知識進行復習。我開發(fā)板上的芯片是stc90c51,不同型號的51芯片可能會略有差異。

二、外圍電路

要使單片機正常工作,需要在VCC腳上給予5v/3.3v的電壓,將GND腳接地。為了濾波 ,VCC和GND之間接兩個電容。XTAL上接一個外部振蕩器,RST腳上接外部復位電路。

雖然這些都已經(jīng)標準化,無關編程。但在某些特殊情況下(比如晶振、穩(wěn)壓芯片壞了,虛焊等等),需要配合示波器等作出硬件故障的排除,就需要檢查外圍電路的工作狀態(tài)。

三、片內(nèi)資源3.1 特殊功能寄存器&相關模塊

這里貼一下sdcc下c51通用的頭文件??梢郧逦每吹娇刂艷PIO,定時器,中斷,串口的相關寄存器。

#ifndef REG8051_H

#define REG8051_H


/* BYTE Register */

__sfr __at (0x80) P0 ;

__sfr __at (0x81) SP ;

__sfr __at (0x82) DPL ;

__sfr __at (0x83) DPH ;

__sfr __at (0x87) PCON ;

__sfr __at (0x88) TCON ;

__sfr __at (0x89) TMOD ;

__sfr __at (0x8A) TL0 ;

__sfr __at (0x8B) TL1 ;

__sfr __at (0x8C) TH0 ;

__sfr __at (0x8D) TH1 ;

__sfr __at (0x90) P1 ;

__sfr __at (0x98) SCON ;

__sfr __at (0x99) SBUF ;

__sfr __at (0xA0) P2 ;

__sfr __at (0xA8) IE ;

__sfr __at (0xB0) P3 ;

__sfr __at (0xB8) IP ;

__sfr __at (0xD0) PSW ;

__sfr __at (0xE0) ACC ;

__sfr __at (0xF0) B ;



/* BIT Register */

/* P0 */

__sbit __at (0x80) P0_0 ;

__sbit __at (0x81) P0_1 ;

__sbit __at (0x82) P0_2 ;

__sbit __at (0x83) P0_3 ;

__sbit __at (0x84) P0_4 ;

__sbit __at (0x85) P0_5 ;

__sbit __at (0x86) P0_6 ;

__sbit __at (0x87) P0_7 ;


/* TCON */

__sbit __at (0x88) IT0 ;

__sbit __at (0x89) IE0 ;

__sbit __at (0x8A) IT1 ;

__sbit __at (0x8B) IE1 ;

__sbit __at (0x8C) TR0 ;

__sbit __at (0x8D) TF0 ;

__sbit __at (0x8E) TR1 ;

__sbit __at (0x8F) TF1 ;


/* P1 */

__sbit __at (0x90) P1_0 ;

__sbit __at (0x91) P1_1 ;

__sbit __at (0x92) P1_2 ;

__sbit __at (0x93) P1_3 ;

__sbit __at (0x94) P1_4 ;

__sbit __at (0x95) P1_5 ;

__sbit __at (0x96) P1_6 ;

__sbit __at (0x97) P1_7 ;


/* SCON */

__sbit __at (0x98) RI ;

__sbit __at (0x99) TI ;

__sbit __at (0x9A) RB8 ;

__sbit __at (0x9B) TB8 ;

__sbit __at (0x9C) REN ;

__sbit __at (0x9D) SM2 ;

__sbit __at (0x9E) SM1 ;

__sbit __at (0x9F) SM0 ;


/* P2 */

__sbit __at (0xA0) P2_0 ;

__sbit __at (0xA1) P2_1 ;

__sbit __at (0xA2) P2_2 ;

__sbit __at (0xA3) P2_3 ;

__sbit __at (0xA4) P2_4 ;

__sbit __at (0xA5) P2_5 ;

__sbit __at (0xA6) P2_6 ;

__sbit __at (0xA7) P2_7 ;


/* IE */

__sbit __at (0xA8) EX0 ;

__sbit __at (0xA9) ET0 ;

__sbit __at (0xAA) EX1 ;

__sbit __at (0xAB) ET1 ;

__sbit __at (0xAC) ES ;

__sbit __at (0xAF) EA ;


/* P3 */

__sbit __at (0xB0) P3_0 ;

__sbit __at (0xB1) P3_1 ;

__sbit __at (0xB2) P3_2 ;

__sbit __at (0xB3) P3_3 ;

__sbit __at (0xB4) P3_4 ;

__sbit __at (0xB5) P3_5 ;

__sbit __at (0xB6) P3_6 ;

__sbit __at (0xB7) P3_7 ;


__sbit __at (0xB0) RXD ;

__sbit __at (0xB1) TXD ;

__sbit __at (0xB2) INT0 ;

__sbit __at (0xB3) INT1 ;

__sbit __at (0xB4) T0 ;

__sbit __at (0xB5) T1 ;

__sbit __at (0xB6) WR ;

__sbit __at (0xB7) RD ;


/* IP */

__sbit __at (0xB8) PX0 ;

__sbit __at (0xB9) PT0 ;

__sbit __at (0xBA) PX1 ;

__sbit __at (0xBB) PT1 ;

__sbit __at (0xBC) PS ;


/* PSW */

__sbit __at (0xD0) P ;

__sbit __at (0xD1) F1 ;

__sbit __at (0xD2) OV ;

__sbit __at (0xD3) RS0 ;

__sbit __at (0xD4) RS1 ;

__sbit __at (0xD5) F0 ;

__sbit __at (0xD6) AC ;

__sbit __at (0xD7) CY ;


/* BIT definitions for bits that are not directly accessible */

/* PCON bits */

#define IDL 0x01

#define PD 0x02

#define GF0 0x04

#define GF1 0x08

#define SMOD 0x80


/* TMOD bits */

#define T0_M0 0x01

#define T0_M1 0x02

#define T0_CT 0x04

#define T0_GATE 0x08

#define T1_M0 0x10

#define T1_M1 0x20

#define T1_CT 0x40

#define T1_GATE 0x80


#define T0_MASK 0x0F

#define T1_MASK 0xF0


/* Interrupt numbers: address = (number * 8) + 3 */

#define IE0_VECTOR 0 /* 0x03 external interrupt 0 */

#define TF0_VECTOR 1 /* 0x0b timer 0 */

#define IE1_VECTOR 2 /* 0x13 external interrupt 1 */

#define TF1_VECTOR 3 /* 0x1b timer 1 */

#define SI0_VECTOR 4 /* 0x23 serial port 0 */


#endif


3.2 內(nèi)部Ram&Rom

最初的51單片機有128byte的片內(nèi)Ram和4K的片內(nèi)的Rom,現(xiàn)在的51單片機可以有1K的片內(nèi)Ram和64K片內(nèi)的Rom。至于如何選擇芯片型號要根據(jù)項目的實際需要和成本,參考選型指南、供應市場的具體情況作出。


本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

在單片機通信系統(tǒng)中,數(shù)據(jù)幀是實現(xiàn)設備間可靠對話的核心載體。不同于網(wǎng)絡通信中成熟的TCP/IP協(xié)議,單片機通信往往需要自定義數(shù)據(jù)幀格式,而幀頭、幀尾與校驗機制則是保障數(shù)據(jù)傳輸準確性的三大關鍵。

關鍵字: 單片機 數(shù)據(jù)幀

隨著嵌入式技術(shù)的不斷發(fā)展,時序分析工具和方法也在不斷進步,未來將朝著智能化、自動化的方向發(fā)展,為開發(fā)者提供更高效的調(diào)試手段。但無論技術(shù)如何發(fā)展,扎實的時序分析基礎都是嵌入式開發(fā)者不可或缺的能力,只有深入理解通信時序的本質(zhì)...

關鍵字: 時序 單片機

在嵌入式系統(tǒng)設計中,不同架構(gòu)、不同廠商的單片機協(xié)同工作早已成為常態(tài)。從8位的51系列到32位的STM32,從精簡指令集的PIC到復雜指令集的AVR,這些性能各異的單片機如何突破硬件差異實現(xiàn)數(shù)據(jù)交互,是嵌入式開發(fā)中的核心課...

關鍵字: 嵌入式 單片機

在嵌入式系統(tǒng)開發(fā)中,單片機的時鐘系統(tǒng)是整個系統(tǒng)的"心臟",所有的指令執(zhí)行、外設操作、定時器中斷都依賴于精準的時鐘信號。但在實際開發(fā)過程中,很多開發(fā)者都會遇到單片機時鐘不準的問題,表現(xiàn)為定時器計時偏差、UART通信波特率錯...

關鍵字: 控制系統(tǒng) 單片機

在單片機開發(fā)與調(diào)試過程中,復位電路作為保障芯片正常啟動的核心模塊,其穩(wěn)定性直接影響程序燒錄與系統(tǒng)運行。實際應用中,不少開發(fā)者會遇到“接穩(wěn)壓電源可正常燒錄,接入電池后卻無法燒錄程序”的故障,此類問題多與復位電路設計、電池供...

關鍵字: 單片機 復位電路 時序匹配

在單片機的世界里,“字節(jié)”(Byte)是一個貫穿始終的核心概念。從存儲數(shù)據(jù)到執(zhí)行指令,從變量定義到外設通信,字節(jié)無處不在。很多初學者在學習單片機時,往往更關注復雜的程序邏輯和外設驅(qū)動,卻忽略了字節(jié)這個基礎知識點,導致在后...

關鍵字: 單片機 字節(jié)

在單片機的數(shù)字邏輯中,我們通常最關注的是高電平和低電平兩種狀態(tài),它們構(gòu)成了二進制數(shù)字世界的基礎。然而,除了這兩種狀態(tài)之外,還有一種至關重要但常常被忽視的狀態(tài)——高阻態(tài)(High Impedance State)。高阻態(tài)就...

關鍵字: 單片機 高阻態(tài)

對于PIC入門者來說,不需要盲目追求高端開發(fā)板,一塊功能均衡、資料豐富的入門款就能滿足需求。比如Microchip官方推出的PIC16F84A開發(fā)板,它搭載經(jīng)典的8位PIC內(nèi)核,引腳布局清晰,自帶LED、按鍵等基礎外設,...

關鍵字: PIC 單片機

該低功耗器件支持5V運行,在實現(xiàn)高性能的同時,能有效保障系統(tǒng)簡潔性與成本效益

關鍵字: MCU 單片機 工業(yè)自動化
關閉