要使微控制器正常工作,需要在vcc腳上給予5v/3.3v的電壓,將gnd腳接地。為了濾波 ,vcc和gnd之間接兩個電容。xtal上接乙個外部振盪器,rst腳上接外部復位電路。
雖然這些都已經標準化,無關程式設計。但在某些特殊情況下(比如晶振、穩壓晶元壞了,虛焊等等),需要配合示波器等作出硬體故障的排除,就需要檢查外圍電路的工作狀態。
這裡貼一下sdcc下c51通用的標頭檔案。可以清晰得看到控制gpio,定時器,中斷,串列埠的相關暫存器。
#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
最初的51微控制器有128byte的片內ram和4k的片內的rom,現在的51微控制器可以有1k的片內ram和64k片內的rom。至於如何選擇晶元型號要根據專案的實際需要和成本,參考選型指南、**市場的具體情況作出。 51微控制器
數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...
51微控制器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 1.供電電源 一般開發板上提供兩種供電方式,usb供電和專用電源供電。使用usb供電你只要用一根usb線將開發板usb電源介面與電腦的usb...
51微控制器
設計包含乙個矩陣式鍵盤電路和動態顯示電路的微控制器應用系統,通過根據按下不同的數字按鍵 0 9 在數碼管上顯示出自己學號的後8位。各位大神幫忙挑挑錯,或者問題太大了可以幫忙寫乙個新的麼!萬分感謝!好著急 a 8255 equ 7cffh a口 b 8255 equ 7dffh b口 c 8255 e...