1、它是时序中的最大单位。一个指令周期通常含有1,2或4个机器周期。指令所包含的机器周期数决定了指令的运算速度,机器周期数越少的指令,其执行速度越快。思考题:设应用单片机晶振频率为12MHz,问时钟周期、机器周期、指令周期分别为多少? 80C51单片机中,由 个振荡周期组成1个机器周期,由 个机器周期组成1个指令周期。可通过测量ALE确定CPU是否工作,ALE有时钟的特点。指令字节数:存储该指令所需的ROM单元数指令机器周期数:执行该指令所花费的机器周期数MCS-51/8051共有111条指令,这些指令的字节数和机器周期数各不相同,可分为六类,对应于六种基本时序:单字节单周期指令单字节双周期指令单
2、字节四周期指令双字节单周期指令双字节双周期指令三字节双周期指令项目2v 计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。v 定时:8051单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部时钟源脉冲进行计数的。这个计数源是由单片机的晶振经过12分频(即机器周期脉冲)后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。工作方式2( M1M0=10,自动重装计数初值的8位加1定时器/计数器)16位定时器/计数器被拆成两个8位寄存器TH0和TL0,初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0
3、作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。计数器初值的计算 方法:用最大计数量减去需要的计数次数。即: TC=MC 其中:TC计数器需要预置的初值; M计数器的模值(最大计数值); 方式0时,M=213;方式1时,M=216;方式2, 3时,M=28; C计数器计满回0所需的计数值,即设计任务要求的计数值。例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC = M C = 213 12=8180=1FF4HTH、T
4、L分别送什么?定时器初值的计算定时时间的计算公式为: T=(MTC)T0 (或TC=MT/T0 )其中:T定时器的定时时间,即设计任务要求的定时时间; T0计数器计数脉冲的周期,即单片机系统主频周期的12倍; M计数器的模值; TC定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式0: Tmax=2131s=8.192ms工作方式1: Tmax=2161s=65.536ms工作方式2和3:Tmax=281s=0.256ms(1)采用查询方式处理的程序C语言程序:# include sbit P1_0=P
5、10;void main() /主程序char i;TMOD=0x20;TH1=0x38;TL1=0x38;TR1=1;for(;) if (TF1) TF1=0;P1_0=! P1_0; /查询计数溢出(2)采用中断处理方式的程序EA=1;ET1=1;while(1);void time0_int(void) interrupt 3 /中断服务程序 P1_0=!P1_0;若要输出60ms的方波程序该如何修改?若输出60ms方波,则定时时间为30ms,工作方式选择方式1(16位加1定时器/计数器方式)。TC=M-T/ T计数=216-30ms/1s=65536-30000=8AD0Hv C51
6、程序如下:#include#define PORTA XBYTE0xffc0#define NRAM DBYTE0x402. 通过指针访问例4-8】 通过指针实现绝对地址的访问。#define uchar unsigned char /*定义符号uchar为unsigned char*/#define uint unsigned int /*定义符号uint为unsigned int*/void func(void)uchar data var1;uchar pdata *dp1; /*定义一个指向pdata区uchar型数据的指针dp1*/uint xdata *dp2; /*定义一个指向x
7、data区uint型数据的指针dp2*/uchar data *dp3; /*定义一个指向data区的uchar型数据指针dp3*/dp1=0x30; /*dp1指针赋值,指向pdata区的30H单元*/dp2=0x1000; /*dp2指针赋值,指向xdata区的1000H单元*/*dp1=0xff; /*将数据0xff送到片外RAM30H单元*/*dp2=0x1234; /*将数据0x1234送到片外RAM1000H单元*/dp3=&var1; /*dp3指针指向data区的var1变量*/*dp3=0x20; /*给变量var1赋值0x20*/3. 使用C51扩展关键字_at_存储器类型 数据类型说明符 变量名 _at_ 地址常数【例4-9】#define uchar unsigned char #define uint unsigned int data uchar x1 _at_ 0x40;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1