当前位置: 首页 > news >正文

网站建设培训学院wordpress 推荐文章

网站建设培训学院,wordpress 推荐文章,可以转app的网站怎么做,长尾关键词搜索三、功能模块 4、中断系统 中断系统 1#xff09;中断的概念#xff1a;这是大家需要在脑子里有的一个印象#xff0c;我们大致可以将中断描述成CPU在处理某一事件A时#xff0c;发生了另一事件B请求CPU迅速去处理#xff08;中断发生#xff09;#xff1b;CPU暂时中…三、功能模块 4、中断系统 中断系统 1中断的概念这是大家需要在脑子里有的一个印象我们大致可以将中断描述成CPU在处理某一事件A时发生了另一事件B请求CPU迅速去处理中断发生CPU暂时中断当前的工作转去处理事件B中断响应和中断服务待CPU将事件B处理完毕后再回到原来事件A被中断的地方继续处理事件A中断返回这一过程我们称为中断。 2中断源我们将引起CPU中断的根源或原因称为中断源。中断源向CPU提出的处理请求称为中断请求或中断申请。传统的51单片机有5个中断源而我们使用的IAP15有14个中断源 3使用中断我们一定要知道中断优先级和中断嵌套这两个概念。 ①中断优先级当有几个中断源同时申请中断时那么就存在CPU先响应哪个中断请求的问题为此CPU要对各中断源确定一个优先等级称为中断优先级。中断优先级高的中断请求优先响应。 ②中断嵌套中断优先级高的中断请求可以中断CPU正在处理的优先级更低的中断服务程序待完成了中断优先权高的中断服务程序之后再继续执行被打断的优先级低的中断服务程序这就是中断嵌套。 我们使用的IAP15F2K61S2单片机的中断系统有14个中断源2个优先级可实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE、IE2、INT_CLKO控制CPU是否响应中断请求由中断优先级寄存器IP、IIP2安排各中断源的优先级同一优先级内2个以上中断同时提出中断请求时由内部的查询逻辑确定其响应次序。 中断请求标志AP15F2K61S2单片机的10个中断源的中断请求标志分别寄存在TCON、SCON、PCON、S2CON、ADC_CONTR、SPSTAT、CCON中其中外部中断2/INT2、外部中断3/INT3和外部中断4/INT4的中断请求标志位被隐藏起来了对用户是不可见的。当相应的中断被响应后或EXn0n2、3、4这些中断请求标志位会自动被清0定时器T2的中断请求标志位也被隐藏起来了对用户是不可见的当T2的中断被响应后或ET20这些中断请求标志位会自动被清0。 IAP15F2K61S2单片机的中断请求 中断允许的控制计算机中断系统有两种不同类型的中断一类称为非屏蔽中断另一类称为可屏蔽中断。IAP15F2K61S2单片机的14个中断源都是可屏蔽中断其中断系统内部设有3个专用寄存器IE、IE2、INT_CLKO用于控制CPU对各中断源的开放或屏蔽。 中断优先的控制IAP15F2K61S2单片机除外部中断2/INT2、外部中断3/INT3、定时器T2中断和外部中断4/INT4为固定最低优先级中断外其他中断都具有2个中断优先级可实现二级中断服务嵌套。IP、IP2为中断优先级寄存器锁存各中断源优先级控制位。 中断源自然优先级从高到低排序 中断源 外部中断0 定时器T0 中断 外部中断1 定时器T1中断 串行口中断 A/D转换中断 LVD中断 PCA中断 串行口2中断 SPI中断 外部中断2 外部中断3 定时器T2中断 外部中断4 IAP15F2K61S2单片机中断响应 中断响应是CPU对中断源中断请求的响应包括保护断点和将程序转向中断服务程序的入口地址通常称矢量地址。CPU并非任何时刻都响应中断请求而是在中断响应条件满足之后才会响应。 中断服务与中断返回中断服务与中断返回就是通过执行中断服务程序完成的。中断服务程序从中断入口地址开始执行到返回指令“RETI”为止一般包括四部分内容其结构是保护现场中断服务恢复现场、中断返回。 保护现场用入栈操作指令将需保护寄存器的内容压入堆栈。 中断服务中断服务程序的核心部分是中断源中断请求之所在。 恢复现场在中断服务结束之后中断返回之前用出栈操作指令将保护现场中压入堆栈的内容弹回到相应的寄存器中注意弹出顺序必须与压入顺序相反。 中断返回中断返回是指中断服务完成后计算机返回原来断开的位置即断点继续执行原来的程序。中断返回由中断返回指令RETI来实现。 5、定时器/计数器Timer0/1 定时器Timer0/1 首先我们需要知道定时器Timer需要使用的寄存器有哪些 我们先来简单的说一下TMOD、 TCON两个寄存器的功能和区别 1TMOD就是运行模式配置寄存器也就是配置定时器是工作在定时器状态还是计数器状态以及定时器的工作模式是13位定时器16位定时器双8位定时器自动重装还是双8位定时器等等。 2TCON就是定时/计数器的控制寄存器包括控制定时器的的启动与停止是否允许外部的中断请求判断定时器是否已经溢出等等。 简而言之一句话2个寄存器 一个是配置模式功能 一个是控制功能具体的运用理解还需要大家多看多用。 定时器/计数器0/1控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器同时也锁存T0、T1溢出中断源和外部请求中断源等TCON格式如下 TCON为定时器/计数器中断控制寄存器可位寻址 各寄存器功能 定时器/计数器0/1工作模式寄存器TMOD 定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择TMOD寄存器的各位信息。 可以看出2个定时/计数器有4钟操作模式通过TMOD的M1和M0选择。2个定时/计数器模式0、1和2都相同模式3不同各模式下的功能请参见datasheet P593。 定时器0/1的中断控制寄存器IE和IP IE中断允许寄存器可位寻址 EACPU的总中断允许控制位EA 1CPU开放中断EA 0CPU屏蔽所有的中断申请。 ET1定时/计数器T1的溢出中断允许位ET1 1允许T1中断ET1 0禁止T1中断。 ET0同上。 IP中断优先级控制寄存器可位寻址 PT1 定时器1中断优先级控制位。 当PT1 0时定时器1中断为最低优先级中断优先级0 当PT1 1时定时器1中断为最高优先级中断优先级1 PT0 定时器1中断优先级控制位。 当PT0 0时定时器0中断为最低优先级中断优先级0 当PT0 1时定时器0中断为最高优先级中断优先级1 注意事项 辅助寄存器AUXR 普通8051单片机是12T的机器周期STC15的是1T的这个辅助寄存器的功能就是用来选择STC15工作在1T还是12T的模式下。 定时器/计数器0工作模式 通过对寄存器TMOD中的M1TMOD.1、TMOD.0的设置定时器/计数器0有4种不同的工作模式。 模式016位自动重装载模式只介绍该模式其余三种模式见datasheet 定时器/计数器0工作模式016位自动重装载模式 M1和M0方式选择控制位 C/ T功能选择位。 1计数器功能对T0或T1引脚的负跳变进行计数。 0定时器功能对时钟周期进行计数。 GATE门控位。GATE用于选通控制。 1INTX为高电平且TRX置位时启动定时器工作。 0每当TRX置位时就启动定时器工作。 注意TMOD寄存器不能进行位寻址设置时只 能对整个寄存器赋值。 IAP15F2K61S2的定时器有两种计数速率一种是12T模式每12个时钟加1另一种是1T模式每个时钟加1。 T0和T1的速率分别由特殊功能寄存器AUXR中的T0x12和T1x12决定。 T0x120T0工作在12T模式 T0x121T0工作在1T模式。 T1x120T1工作在12T模式 T1x121T1则工作在1T模式。 定时器0和定时器1分别有2个隐藏的寄存器RL_THx和RL_TLx。RL_THx与THx共有同一个地址RL_TLx与TLx共有同一个地址。当TRx0即定时器/计数器被禁止工作时对TLx、THx写入的内容会同时写入RL_TLx、RL_THx。 当TRx1即定时器/计数器工作时对TLx 、THx写入的内容不会写入RL_TLx 、RL_THx。 当定时器工作在模式0时[TLxTHx]的溢出 不仅置位TFx而且会自动将[RL_TLx,RL_THx] 的内容重新装入[TLx,THx]。 当T0CLKO1时T1/P3.5引脚配置为定时器0的时钟输出CLKOUT0。 当T1CLKO1时T0/P3.4引脚配置为定时器1的时钟输出CLKOUT1。 详细介绍 定时器的最大定时能力 当工作于定时状态时定时/计数器是对时钟周期进行计数若对时钟进行12分频则对每12个时钟周期计数一次。 当晶振频率为6MHz采用12分频时计数的单位时间为 单位时间为 定时时间为 TCXTu。 其中Tu为单位时间TC为定时时间X为所需计数次数。 STC15F2K60S2单片机的定时/计数器是加1计数器。因此不能直接将实际的计数值作为计数初值送入计数寄存器THX、TLX中而必须将实际计数值以28、216为模求补以补码作为计数初值设置THX和TLX。 即应装入计数/定时器的初值为其中n8或16。 例如已知Tu2μs要求定时TC1ms则 对方式0和方式1时间常数为21650065036FE0CH THX装入FEHTLX装入0CH。 设系统时钟频率为6MHz12分频时 8位定时器的最大定时能力为T28 0×2μs512μs 16位定时器的最大定时能力为T216 0×2μs131072μs131.072ms 最后补充一下初学阶段对定时器的使用可以直接使用我第一章中所讲的方法直接自动生成所需定时器用以程序使用但是还是希望大家理解最重要。 以上是定时器的原理接下来我们简单运用定时器来写个控制LED量灭的程序 #include “stc15f2k60s2.h”#define LED P0unsigned char t;void Timer0Init(void);void main() {P2 ((P20x1f)|0xA0); //不再重复解释前两章已解释多次P0 0X00;P2 ((P20x1f)|0x80);P0 0Xff;//先关闭LEDTimer0Init();EA 1; //打开定时器0ET0 1;while(1){if(t 200){LED ~LED;t 0;//初始化标志位}} }void Timer0Init(void)//5毫秒11.0592MHz {AUXR | 0x80;//定时器时钟1T模式TMOD 0xF0;//设置定时器模式TL0 0x00;//设置定时初值TH0 0x28;//设置定时初值TF0 0;//清除TF0标志TR0 1;//定时器0开始计时 }void Timer0() interrupt 1 //定时器0的开启中断1 {t; } 6、静态数码管和动态数码管 共阴/共阳数码管 使用的是两个4位八段共阳数码管。 八段数码管八个发光二极管组成的如上图的结构形态 共阴数码管八个LED阴极相连组成公共端接GND 共阳数码管八个LED阳极相连组成公共端接VCC。 4位八段数码驱动原理其中八个管脚作为A,B,C,D,E,F,G,DP的驱动端口选择哪一段数码管亮或不亮我们称之为数码管段选还有4个管脚作为选择四位数码管中的哪一位亮或不亮的驱动端口也就是四个公共端我们称之为数码管位选。 驱动原理 图中a1、b1……dp1就是数码管的段选端口com1、com2……com8就是数码管的位选端口我们可以看到蓝桥杯开发板的数码管段选和位选都是通过单片机的P0寄存器来驱动的但是因为P0不能同一时刻既做段选又做位选所以这里就要在一个很短的时间内在段选和位选之间切换选择操作。 静态数码管数码管所有公共端接GND或VCC在该开发板上不是接GND和VCC而是接在两个573三态锁存器上全亮全灭不单独选择端口操作。优点不闪烁亮度高。缺点占用端口多。 示例程序 /******************//* 数码管程序示例 *//******************/ #include “stc15f2k60s2.h” #define uchar unsigned char #define uint unsigned intuchar code tab[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; /*这里如果不加code就会占用寄存器允许读取和修改寄存器的值 但是寄存器的数量有限故我们在这里加上code将其定义为代码的 类型只能读取不能修改*/ uchar t 0,i;void Timer0Init(void);void main() {P2 ((P20x1f)|0xa0);//不再重复解释前两章已解释多次P0 0x00;P2 ((P20x1f)|0xc0);//打开位选选573P0 0xff;//选择8位数码管P2 ((P20x1f)|0xff);//打开段选573Timer0Init();EA1;ET01;while(1){if(t 100){t 0;P0 tab[i];i;if(i 12)i 0;}} }void Timer0Init(void)//5毫秒11.0592MHz {AUXR | 0x80;//定时器时钟1T模式TMOD 0xF0;//设置定时器模式TL0 0x00;//设置定时初值TH0 0x28;//设置定时初值TF0 0;//清除TF0标志TR0 1;//定时器0开始计时 }void Timer0() interrupt 1 {t; } 动态数码管 数码管公共端依次扫描接通。优点占用端口少。缺点摄像拍照时闪烁在同样电压下与静态相比亮度较低。示例程序 #include stc15f2k60s2.h #include intrins.h#define uchar unsigned char #define uint unsigned intuchar code tab[] {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x7f}; /*这里如果不加code就会占用寄存器允许读取和修改寄存器的值 但是寄存器的数量有限故我们在这里加上code将其定义为代码的 类型只能读取不能修改*/ uchar t 0; uchar c5, c6, c7, c8; uint num 2330;void Timer0Init(void); void display(uchar c5, uchar c6, uchar c7, uchar c8); void Delay1ms();void main() {P2 ((P20x1f)|0xa0);//不再重复解释前两章已解释多次P0 0x00;Timer0Init();EA1;ET01;while(1){if(t 200){t 0;num--;c5 (num / 1000) % 10;c6 (num / 100) % 10;c7 (num /10) % 10;c8 num % 10;}display(c5, c6, c7, c8);} }void display(uchar c5, uchar c6, uchar c7, uchar c8) {P2 ((P20x1f)|0xc0);P0 0x80;P2 ((P20x1f)|0xff);P0 tab[c8];Delay1ms();P2 ((P20x1f)|0xc0);P0 0x40;P2 ((P20x1f)|0xff);P0 tab[c7];Delay1ms();P2 ((P20x1f)|0xc0);P0 0x20;P2 ((P20x1f)|0xff);P0 tab[c5];Delay1ms();P2 ((P20x1f)|0xc0);P0 0x10;P2 ((P20x1f)|0xff);P0 tab[c6];Delay1ms(); } 定时器中断实现实时时钟程序 使用单片机定时器制作一个以00-00-00模式显示可以通过四个独立按键进行时间修改的24小时制时钟。 定时器、中断、数码管、按键等功能 #include stc15f2k60s2.h #define uchar unsigned char #define uint unsigned sbit key1P3^0;//定义端口参数 sbit key2P3^1; sbit key3P3^2; sbit key4P3^3; /*key1用于小时 1key2用于小时 -1key3用于分钟 1key4用于分钟 -1 */int uchar code tab[] {0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0xbf,0x7f}; uchar strtab[8];//定义缓冲区域 uchar hour 10, minute 25, second 12; //初始化起始时间10-25-12void display(void); void delayms(int ms); void Timer0Init(void); void Timer1Init(void);void main() {P2 ((P20x1f)|0xa0);P0 0x00;Timer0Init();Timer1Init();ET0 1;//开启定时器0ET1 1;//同上EA 1;//定时器使能display();while(1){if (!key1){delayms(5);//按键消抖if (!key1){hour;if (hour 24)hour 0;display();while(!key1);//松手检测}}//其余三个按键功能请自行编写如遇问题请下载参考源程序} }void display(void) {strtab[0] tab[hour / 10];strtab[1] tab[hour % 10];strtab[2] tab[10];strtab[3] tab[minute % 10];strtab[4] tab[minute % 10];strtab[5] tab[10];strtab[6] tab[second / 10];strtab[7] tab[second % 10]; }void delayms(int ms) {int i,j;for(ims;i0;i--)for(j845;j0;j--); }void Timer0Init(void) //5毫秒11.0592MHz //内容请自行计算void Timer1Init(void) //1毫秒11.0592MHz //内容请自行计算void Timer1_int() interrupt 3 using 0 {static uchar num;TH1 0xcd;TL1 0xd4;switch(num)//分别调用缓冲区的值进行扫描{case 0: P2 ((P20x1f)|0xc0); P0 0x01;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 1: P2 ((P20x1f)|0xc0); P0 0x02;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 2: P2 ((P20x1f)|0xc0); P0 0x04;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 3: P2 ((P20x1f)|0xc0); P0 0x08;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 4: P2 ((P20x1f)|0xc0); P0 0x10;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 5: P2 ((P20x1f)|0xc0); P0 0x20;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 6: P2 ((P20x1f)|0xc0); P0 0x40;P2 ((P20x1f)|0xff); P0 strtab[num];break;case 7: P2 ((P20x1f)|0xc0); P0 0x80;P2 ((P20x1f)|0xff); P0 strtab[num];break;default:break;}num;if (num 8)num 0; } void Timer0_int() interrupt 1 using 1 {static uchar count;//定义内部静态变量TL0 0x00; //初始化初值TH0 0x28;count;switch (count);{case 0:case 40:case 80:case 120:case 160:display();break;}if (count 200){count 0;second;//加一秒if (second 60){second 0;minute;//加一分if (minute 60){minute 0;hour;//加一小时if (hour 24)hour 0;}}} }习题使用单片机定时器制作一个以00-00-00为初始可以通过四个独立按键进行时间修改的24小时制时钟。
http://www.pierceye.com/news/147799/

相关文章:

  • 宿迁明远建设有限公司网站赣州58同城网招聘找工作
  • 网站未续费到期后打开会怎样wordpress 顶部栏 悬浮
  • 内部优惠券网站怎么做大连网站制作建设
  • 经营虚拟网站策划书福建设备公司网站
  • 网站建设费用明细报价wordpress暗箱
  • 南宁网站建公司电话福州建站服务
  • 有没有什么推荐的网站用 php网站建设打出一首古诗
  • 品牌网站建设浩森宇特wordpress 首页 缩略图
  • 一个主机可以做几个网站域名织梦cms网站更新
  • 知名网站有哪些网站开发是什么环境
  • 哪些网站是用wordpress开发一款视频app多少钱
  • 济南网站定制制作建设项目 环评申报网站
  • 无锡响应式网站设计wordpress站群管理系统
  • 主题网站策划设计书网络营销是什么的一项活动
  • python+网站开发实例教程免费做视频网站
  • 免费建站自己的网址美化网站公司
  • 做购物网站哪个cms好用网络规划与设计就业前景
  • wordpress仿站工具网站建设jw100
  • 网站推广过程叙述关键词歌词
  • vip影视网站如何做appwordpress centos查看目录
  • 网站怎么套模板山西seo博客
  • 好看的手机网站推荐新建的网站 找不到
  • 网站站内搜索怎么做seo搜索优化
  • 建设部网站 测绘规章pc网站手机网站
  • 建网站如何赚钱vs哪个版本做网站好
  • 新衡阳网站游戏软件开发公司简介
  • 湖南基础建设投资集团网站做体育最好的网站
  • 上海php网站开发公司wordpress 邮件认证
  • 教做香肠的网站张家港专业网站建设
  • 园林建设网站营销型网站的建站步骤是什么意思