您的位置:首页 > 其它

学习笔记 从零开始学单片机(0) 系统结构

2009-10-29 22:32 274 查看
最近想研究研究嵌入式系统,由于虽然是计算机专业的,但是硬件知识很差,再加上毕业若干年,全部忘光光。可以说,一切几乎是从零开始了。我还是从简单点的单片机开始学习,看了一眼,感觉比较容易些,从浅入深的学习吧。原来学东西好囫囵吞枣,学了一大堆几乎都是些皮毛,我这次写这个日志,一个是把它当做我的学习笔记,另外也是敦促我自己踏踏实实的学习。

言归正传,去年在二手市场上花了¥2.00(也够抠门的了)买来了一本《单片微型机 原理、应用与实验》,复旦大学出版社的(我就是由买书的爱好,有没有用看到就想买),就拿它当做我的课本了吧。单片机这个东西,要理论联系实际,没有实验啥都是白学!于是跑到淘宝上花了3百多RMB买来开发板一套,附赠视频教程。预览了一遍,都是简单介绍一下理论(很多东西都没有说清楚),主要就是讲解了一下C代码,一切都得靠自己,哪有那么多现成的。

教材上用的是汇编语言,写程序真是麻烦,还是用C吧,大不了C搞不定的时候嵌汇编不就完了么!

还是从51,这个虽然比较老,但是很经目前典用应仍然很广泛的这类芯片开始学习,下面是一个典型的8051引脚图。



图1.1 8051引脚图

制造工艺为HMOS(参考数电)的MSC-51单片机采用的是只引脚双列直插封装。12个时钟是一个机器周期,51的指令1~4个机器周期。

(1) 电源引脚:
Vcc接(+5v)电源
Vss接地。
(2) 时钟引脚:
XTAL1、XTAL2外接晶体振荡器。
(3) 控制引脚:
RST/Vpd:复位信号/备用电源输入(H/L)
ALE/PROC:地址锁存允许信号/编程脉冲输入端(H/L)
PSEN:程序存储器输出控制(L)
EA/Vpp:内外程序存储器选择控制端/施加较高编程电压(+21V或12V)的输入端(L/H)
(4)I/O口引脚

P0口:是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
P1口:是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址。
P2口:是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
P3口:是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。
P3.0 10 RXD(串行输入口)
P3.1 11 TXD(串行输出口)
P3.2 12 INT0(外部中断0)
P3.3 13 INT1(外部中断1)
P3.4 14 T0(定时器0外部输入)
P3.5 15 T1(定时器1外部输入)
P3.6 16 WR(外部数据存储器写脉冲)
P3.7 17 RD(外部数据存储器读脉冲)
在4个端口当中,只有P0是真正的双向口,其他都是准双向口。其他都是准双向口。

单片机控制的时候就是向4个I/O口送高低电平,另外我们需要关注的是它的存贮器,和寻址方式。
(1)程序存贮器:
可以在单片机内部或者在外部,PC就是从0地址开始执行的,此时要设置一个跳转指令,跳向用户设计的主程序。MSC-51的中断入口是固定的,它们的地址是0BH,13H,1BH,23H……。地址通常从3开始,每隔8个字节安排一个中断入口。
(2)内部RAM数据存贮器
工作寄存器区(由PSW的第三和第四位指示):在需要的时候它们也可以作为数据缓冲器。
00H~07H:工作寄存器区0(R0~R7)
08H~0FH:工作寄存器区1(R0~R7)
10H~17H:工作寄存器区2(R0~R7)
18H~1FH:工作寄存器区3(R0~R7)
位寻址区:20H~2FH,它们每一位都占据地址空间00H~7FH,用于存放程序标志、位控制信息,同样它们也可以作为一般的数据缓冲器。
堆栈和数据缓冲器:30H~7FH。进栈是,SP先加1在写入,复位后SP为07H。所以对SP初始化时SP=6FH。
(3)特殊功能寄存器(地址空间80H~FFH)
复位时寄存器的状态如下:PC(0),PSW(0),SP(07H),P0~P3(FFH),SBUF(未知)…
(4)外部RAM和I/O口
MSC-51可以扩展64KB的RAM和I/O口,它们是统一编址的。

8051中断系统



5个中断源:INT0(P3.2),INT1(P3.3)外部中断源;TF0(定时器0),TF1(定时器1),RI/TI(串口输入输出中断)三个内部中断源。

2级的中断优先级(如图所示)

与中断有关的寄存器:

TCON

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0
IT0:外部中断INT0触发方式选择(0,电平触发L;1,跳沿触发H2L),软件设置

IE0:外部中断INT0请求标志位,CPU响应中断后硬件清零

IT1:外部中断INT0触发方式选择,与IT0类似

IE1:外部中断INT0请求标志位,,与IE0类似

TR0:与TR1类似

TF0:T0溢出请求标志位,CPU响应中断后清零,查询方式下由软件清零

TR1:T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

TF1:T1溢出请求标志位,与TF0类似

SCON

D7D6D5D4D3D2D1D0
TIRI
TI:串口发送中断请求标志位,硬件自动置位,在中断服务程序中软件清零

RI:串口接受中断请求标志位,硬件自动置位,在中断服务程序中软件清零

IE

D7D6D5D4D3D2D1D0
EAESET1EX1ET0EX0
EA:中断允许控制位,1-开中断 0-关中断

ES:串口输入输出中断控制位,1-允许中断 0-禁止中断

ET1:T1中断控制位,1-允许中断 0-禁止中断

EX1:INT1中断控制位,1-允许中断 0-禁止中断

ET0:T0中断控制位,1-允许中断 0-禁止中断

EX0:INT0中断控制位,1-允许中断 0-禁止中断

IP

D7D6D5D4D3D2D1D0
PSPT1PX1PT0PX0
PS:串口输入输出中断优先级控制位,1-高 0-低

PT1:T1中断优先级控制位,1-高 0-低

PX1:INT1中断优先级控制位,1-高 0-低

PT0:T0中断优先级控制位,1-高 0-低

PX0:INT0中断优先级控制位,1-高 0-低
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: