版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
时钟电路1.4
单片机时钟电路■单片机的定时控制功能是由片内的时钟电路和
定时电路来完成的,而片内的时钟产生有两种方
式:●内部时钟方式●外部时钟方式1.4.1
两种时钟电路内部振荡器方式
外部振荡器方式单片机XTAL₂C2XTAL(a)Ycc]R外部振荡_器信号TTL门单片机XTALXTAL(b)内部时
钟电路内部时
钟电路晶振1、内部振荡方式■片内的高增益反相放大器通过XTAL1、
XTAL2
外接作
为反馈元件的片外晶体振荡器(呈感性)与电容组成的
并联谐振回路构成一个自激振荡器,向内部时钟电路提
供振荡时钟。■振荡器的频率主要取决于晶体的振荡频率,
一般晶体可
在1.2~12MHz
之间任选,电容C1、C2
可在5~30pF之间
选择,电容的大小对振荡频率有微小的影响,可起频率微
调作用。芯片类型接
法XTAL1XTAL2HMOS接地接片外振荡脉冲输入端
(带上拉电阻)CHMOS接片外振荡脉冲输入
端(带上拉电阻)悬空2、外部时钟方式:■不同工艺制造的单片机芯片外部时钟电路连接方法1.4.2单片机的时钟周期■CPU
以不同的方式,通过复杂的时序电路执行并完成各种不
同指令功能。CPU的控制器按照指令的功能发出一系列在时
间上有一定次序的信号去控制和启动一部分逻辑电路,完成
某种操作。■在一定时刻发出一定的控制信号去启动一定的逻辑部件动作,这就是CPU的时序。1.时钟周期■通过单片机的时钟电路可以产生系统时钟信号。系统时钟信
号是一切微处理器、微控制器内部电路工作的基础。■晶体振荡器输出的振荡脉冲经2分频成为内部时钟信号,用
作单片机内部各功能部件按序协调工作的控制信号,其周期
称为时钟周期
(也称状态周期)。2.机器周期■CPU完成一种基本操作所需要的时间称为机器周期Tcy。■MCS-51
系列单片机的的1个机器周期包括6个时钟周期。■为了叙述方便,以S1~S6
分别表示6个时钟周期,以P1、P2表示每个时钟周期的两节拍,则1个机器周期依次由S1P1、S1P2、S2P1……S6P2等12个节拍(每个节拍为1个振荡周期)
组成
。S1S3
S4
S5
S6
P1P2
S2S3S4
S5S6机器周期与振荡周期的关系如果系统时钟的晶振频率为fosc=12MHz,
则1Tcy
=12Tosc=12/fosc=12/(12×106)=1us即:1个机器周期的时间为1
μs。3.指令周期■基本的机器周期有取指周期、存储器读周期和存储器写
周期等,各种指令功能都是由这几种基本机器周期实现
的。■CPU
执行一条指令所需要的时间称为指令周期,它以机
器周期为单位。
MCS-51的指令可以分为单周期指令、双周期指令和四周期指令三种,它们的执行时间依次是
1个、2个和4个机器周期。Keil
C集成开发系统使用R8
22C1D7YELLO0X14
19CRYSTAL183pRSTP2D8R12926528P3DRXDP3.1/TXDP32ANTUP3.3ANT1P3.4/TDP35T1P36RP3.7/RD让最右边的发
光二极管亮,
其它不亮。给P0.0送0,
其他位送1,
可让D8
亮而
其他灯不亮。案例1
单片机控制右侧发光二极管亮灭PSENALEP1DP1.1P12P13P1.4P15P15P1.7PO几ADD
PD.18D1PO3A.D3
PO.4RD4
PO5AD5
PD6AD6
PO.78D7P2.189
P22810
P23A11P2.4812P25A13P26014
P2.7815D6GREEND2GREEN39373535343332盐24D8BLUEU1XTAL1R4
227R3
227R9
227R6
227R2227XTAL2D3D5R5BLUED4R7REDRED16D11.
案例程序#include<reg51.h>
void
main(){unsigned
intvalue;value=0xfe;P0=value;}2.Keil
C51调试方法与步骤■要使用Keil软件,首先要正确安装Keil软件,该软
件的Eval版本可以直接去http://www.keil.com
下载(1)建立工作项目文件■启动Keil
μVison2,
如果打开后就有打开的文件,
单击
"Project->Close
Project"菜单将其关闭。单
击"
File→
New..."
,打开一个新的文件输入窗口
,在这个窗口里输入上述源程序。输入完毕之后
,
选
择“File-->Save”,
给这个文件取名保存。■单击“Project->NewProject...”,
出现对话框,要求给将要建立的工程起一个名字,这里起名为
test,不需要输入扩展名。单击“保存”按钮,出现第二个对话框。8051
based
Full
Static
CMOS
controller
with
Three-Level
Pr32I/0lines,2Timers/Counters,6InterruptsSources,Wat
4KFlash,128BytesOn-chipRAMAT89S51AT89S52AT89S53AT89S8252AT8xC5122AT8xC51SND1AT91F40416AT91F40816AT91FR40162AT91FR4042AT91FR4081AT91M40400□Use
Extended
Linker(LX51)insteadof
BL51□UseExtendedAssembler(AX51)insteadofA51Description:SelectDeviceforTarget'Target
1’CPUVendor:
AtmelDevice:
AT89S51Family:MCS-51Data
baseCPU
选择窗口确
定
取消标准8051启动代码加入工程■
询问是否要将标准的8051
启动代码加入工程,单击“是”按钮。μTision2Copy
Standard
8051
Startup
Code
to
Project
Folder
and
Add
File
to
Project
?是(Y)…
否H)Dt
e
s
t
-
磕ision2FileEditYiewProjectDebugFlashPeripheralsToolsSVCSWindowHelp年
年人
%
%品
Target
1
arget
1STA]G:\KeilC\ytest.cOptions
forGroup'Source
Group
1'Open
FileRebuild
targetBuild
target
F7Translate
FileStopbuildAddFiles
to
Group'Source
Group
1'Targets,Groups,Files...RemoveGroup'SourceGroup
1′and
it'sFilesInclude
Dependencies■
单击"SourceGroup
1"
,使其反白显示,然后
单击鼠标右键,出现一
个下拉菜单。■
选中其中的
“Add
file
to
Group'Source
Group
1'"
,出现一个对话框,要
求寻找源文件。添加源程序D
TWB7TI0TTTtFile
Edit
View
Project
Debug
Flash
Peripherals
Tools品Target
1×Select
Device
for
Target’Target
1’Options
for
Target'Target
1'Qpen
FileRebuild
targetBuild
target
F7Translate
FileStopbuildAdd
Files
to
Group.Targets,Groups,Files...Remove
Item∨Include
Dependencies■
选择资源窗口中的“Target1”,
单击鼠标右键,出现快捷菜单,然后选择
“OptionsforTarget'Target
1'”。工程选项的设置生成单片机烧录文件■在弹出的对话框中选择“output”标签页,选中该页的
“Creat
HEX
File”前面的复选框,这样在编译后就会生
成可以用于烧写的.hex
文件。Device|Target
Output
|Listing|C51|A51|BL51Locate|BL51Mise|Debug
|tilitieselect
Folder
for
Qbjects..
Mame
of
Executable:mytest◎CrgateExecutable:.mytest☑
Debug
Informatio
☑
Browse
Informati
厂
Merge32K
Hexfile☑
Create
HEX
Fi:厂
Create
Batch
FileDebuggingBrowse..取
消DefaultsCCreateLibrary:.mytest.LIBAfterMake-☑
BeepWhenComplete
厂
StartRunUser
Progran
#1厂
Run
User
Program确
定OptionsforTarget'Target
1’(2)项目编译、连接■
"Project→Build
target"可以对当前工程进行连接,产
生目标代码。■
“
Project→RebuildAlltargetfiles”将会对当前工程中
的所有文件(无论是否修改过)重新进行编译,产生
目标代码。■而如果选择
"
Project→Translate....",项则仅对当前
文件进行编译,不进行连接,也就不会产生新的目标
代码。编译、设置的工具栏按钮■编译、编译连接、全部重建、停止编译和对工程进行设置。编译后的输出信息■编译过程中的信息将出现在输出窗口中的Build页中,
提示获得了名为mytest.hex的文件,该文件即可被编
程器读入并写到芯片中。同时还可看到该程序的代码
量、内部RAM的使用量、外部RAM的使用量等一些信
息。除此之外还产生了一些其他相关的文件可被用于
Keil的仿真与调试。assembling
STARTUP.A51...compiling
mytest.c...linking...Program
Size:data=10.1xdata=0code=37creatinghexfile
from
"mytest"..."mytest"-0Error(s),0Warning(s).(3)程序的仿真与调试■工程进行汇编、连接成功以后,按组合键[
Ctrl十F5】或者选
择“Debug→Start/Stop
Debug
Session”
即可进入调试状态,
菜单项中出现了一个用于仿真运行和调试的工具条。图↓
×1
}
0喷
包cDE旨从左到右依次是复位、运行、暂停、单步、过程单步、执
行完当前子程序、运行到当前行、下一状态、打开跟踪、
观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、
1#串行窗口、内存窗口、性能分析、工具按钮等命令的快
捷按钮。■
选择
“Peripherals→
I/O-Ports→
Port0”
和“Peripherals→
I/O-
Ports→
Port
2”,在
主窗口中会出现P0,
P2口的状态,需要
在程序运行的时候
改变P0.0FileEditYiew
Project
Debug
Flash
Peripherals
ToolsSVCSYindowHelp日
%
落网oDE□
×RegisterValueRegsr0Ox00r1Ox00r2Ox00r3Ox00r4Ox00r5Ox00r6Ox00r70x00□…
SysaOx00b0x00spOx07sP_max0x07dptrOzx..PC
$C:..states0sec0....+
psw0x00Parallel
Port
0Port
0-'ins:|OFF
MM
M☑ParallelPort2Port2-#include<reg51.hsbit
key=PO^0;bit
processed;void
main(void)unsigmedchar
counter;while(1)if
(key==1)processed=0;continue;if(processed==0)counter+=1;P2=counter&Oxff;processed=1;仿真或观察PO、P2
端口的状态食■
①双左下
Prof就进
■
②选
打开
光盘加载ISIS设计文件
?
区查找范围I):我最近的文档桌面我的文档我的电脑网上邻居文件名(H):文件类型T):task1.DSNISIS设计文件(*.DSN)□以只读方式打开(区)打开@)取消任务1←名称大小
类型修改日期task1.DSN95KB
SchematicDesign2010-1-523:27(4)在Proteus
中仿真运行(4)在Proteus
中仿真运行■
③单击Proteus
ISIS集成环境中下部“仿真工具栏”的
最左边的按钮(即“运行”),则可在设计区察看运行
结果,可以看到最右边的一个发光二极管亮了。C51循环控制语句循环语句1.while
语
句while(表达式){
循
环
体
}事先测试循环,在执
行语句之前判断表达
式,因此,循环可能
没有执行循环体就退
出。循环条件?T语句F
#include≤reg52
使用while
语句实现从1到100的累加。while(i<=100){sum+=1;i++;}printf('sum=%d\n”,su
m);while(1){}#include<stdio.hvoid
main()
{unsignedint
i=1;unsignedint
sum=0;SCON=0x52;
TMOD=0x20;
THI=0×E8,【
例
2
-
6
】2.for
语句for
(表达式1;表达式2;表达式3){
循环体
}■表达式1为循环控制变量初始
化表达式,表达式2为循环条
件表达式,表达式3为循环控
制变量增值表达式。■
“增值”仅仅是指循环控制变
量发生了变化,不要按其字面
意思去理解。表达式1表达式2真循环体表达式3假for
语句的几点说明①for
语句中的控制变量初始化表达式可以省略,但分
号(;)不可省略。②for语句中的循环条件表达式可以省略。此时一般要
在循环体中对循环条件进行判断并提供退出循环的
措施,否则会导致“死循环”。③for
语句中的循环控制变量增值表达式也可以省略。④可以同时省略for语句中的循环控制变量初始化表达
式和增量表达式,这样的for语句完全等价于while语
句
。实
例
:■常见程序段:int
i;for(i=0;i<30000;i++){}■自行完成例2-6的功能。3.do...while语句do{
循环体
}while
(表达式);T注意:在while
(表达式)后面要加分
号
。语句继续循环?F4.
嵌套的循环结构■实际应用中,经常要用到嵌套的循环结构。■在嵌套循环结构中,内层循环需要置于称之
为外层循环的另一个循环中。■3种循环语句还可以互相嵌套。■P0.0接一个发光二极管,
P1.0
按一个按键,要求当
按键按下时,发光二极管不停地闪烁,当按键放开
时,停止闪烁。【例2
-9】源程序清单:#include<reg51.h>sbit
p10=P1^0;sbit
p00=P0^0;void
main()unsigned
int
i;while(1)while(p10==0)
p00=~p00;C2X1CRYSTAL1FC3STARTfor(i=50000;i>0;i--);PDDADDPD.1D1PD28D2PD30.D3PD.40D4PD5R.D5PD6D6PD.7AD7P2几98P2.1889
P22010P23A11
P2.4A12P25A13
P26014
P2.7815P3DRXDP3.1/TXDP32NNTD
P3.3ANT1P3.4/TDP35T1P360RP3.7/RDU1XTAL1XTAL2RSTPSEN3936336353433213242526Z2311121314151617P1DP1.1P12P1.3P1.4P15P16P1.7AT89C511918931D1REDR2222.2.4
转移语句1.break
语句
break;●在switch语句中,
break语句用来使流程跳出switch结构,继续执行switch之后的语句;●在for语句中,
break语句用来使流程跳出循环体
,接着执行循环后面的语句。#include<reg51.h>sbit
P10=P1^0;sbit
P00=PO^0;void
main(int
i;while(1)PO=~P0;for(i=30000;i>0;i++);if(P10==0)break;}while(1);【例2
-10】针对例2-9,
若与P0.0相连的发光二极管不停
地闪烁,当与P1.0相连
的按键按下时停止闪烁。C2X119CRYSTAL1891F3031START④234
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论