文档库 最新最全的文档下载
当前位置:文档库 › 【妄想系列】《鲑鱼卵》[戛然而止引人遐思啊=v=]

【妄想系列】《鲑鱼卵》[戛然而止引人遐思啊=v=]

【妄想系列】《鲑鱼卵》[戛然而止引人遐思啊=v=]
【妄想系列】《鲑鱼卵》[戛然而止引人遐思啊=v=]

【妄想系列】《鲑鱼卵》[戛然而止引人遐思啊=v=].txt骗子太多,傻子明显不够用了。我就是在路上斩棘杀龙游江过河攀上塔顶负责吻醒你的公主。【鲑鱼卵】

“不好意思啊阿纲,要麻烦你。”

“没有关系,山本能找我帮忙我很高兴哦。”

“唉,都怪老爹这个时候犯病。”

“诶?伯父他……?”

“是啊,痔疮又犯了。”

“……”

天空真蓝,云朵真白,期末考试崩坏的作者已经无法写出文艺的语句。而期末考试在鬼畜家庭教师某某大神的教导下幸运地没有挂掉任何一科的沢田纲吉则成为山本家暂雇送外卖小子一名。他提着装寿司的箱子,在不大也不小的并盛徒步工作者。

啥,你问他为什么不骑脚踏车?

因为沢田纲吉他不会。

“诶多……福田家送完了。接下来是……Hibarli……唔!”

舌头,咬到了。

开开开开什么玩笑!下一个居然是云雀学长!他居然要寿司外卖!啊不对话说回来云雀学长他还是一个人他还是要吃喝圈叉的——

脑残的少年内心那个翻江倒海,左心房右心房要搅成一团。他犹豫着,他的左脚向左踏了一步,右脚向右晃了一下。装着寿司的箱子此时格外沉重。

工作啊!这是工作啊沢田纲吉!

颤抖着的少年勇敢地挺起了胸膛,他赌上了身为一名外卖小子的尊严,虽然这尊严诞生的时间不过几小时而已。

顺着订单上的地址,沢田纲吉意外地没有迷路来到而来云雀家门口。

内,云雀学长他家,竟然没有电网!没有哨所!连栅栏都没有!

孩子,这不是肖申克监狱。

只是一幢很普通的日式民房而已。

明明只是普通的民房,在沢田纲吉的眼里这民房却散发着莫名的灵压。

站在门口,清了清嗓子,开口:

“打扰了!您要的寿司给您送来了!”

声带没有撕裂么!扁桃体没有吐出来么!

“卡——”

门打开了。

一阵狂风刮过,这是错觉。沢田纲吉向前挪了一步,睁大了眼睛。

从门口走出来的云雀恭弥并没有披上黑色的外套,甚至没有穿上学生制服。只是一件再简单不过的白衬衫。云雀恭弥眯起眼,盯着眼前的少年,口气淡淡的:

“……你。”

“诶。是!”

“……竟敢闯入我的领地。”

“诶诶诶!”

云雀学长你也太专制了吧!我可是来送寿司的啊!

“……云雀学长,我是来送寿司的。”

虽然很害怕云雀学长,很怕被他咬杀。但沢田纲吉可不是一名普通的外卖小子他已经有了觉悟!

少年啊少年,你成为外卖小子才多长时间啊,你的觉悟来自何处!?

就算是空穴来风的觉悟,他毕竟还是有了【觉悟】啊!

“你——是来送寿司的。”

这到底是疑问句还是肯定句呢云雀学长。

沢田纲吉从箱子拿出应该是云雀订的那一份寿司(呜哇居然是特级豪华套餐),递给了云雀。

“请确认!确认没有问题的话请在这里签下名字。”

“哼。”

云雀打开了盖子。

“喂。”

“有什么问题?”

“……群聚了。”

“啥?”

云雀关上了盖子。

“鲑鱼卵,群聚了。”

我可没有听说过哪个寿司上只有一颗鲑鱼卵!那分明是恶趣味吧!

外卖小子纲吉为无辜的鲑鱼卵愤愤不平着,路见不平拔刀相助,他抿了抿嘴唇,说:“我无法认同云雀学长的说法。鲑鱼卵什么的,不是越多越好吗。”

“……”

沢田纲吉想用寿司箱子砸死自己因公殉职。

我都说了些什么啊我!老老实实让云雀学长签完名字收了钱怕怕屁股走人不就够了么!“……顾客就是上帝。”

没见过有哪个上帝像云雀学长这样蛮不讲理!

沢田纲吉的无回沟大脑彻底失去了草食动物的理智,他直直地看着云雀恭弥,将手中的本子递了过去:

“除了鲑鱼卵,其他就没有问题了吧。云雀学长。”

“啧,很有问题。”

“哪里有问题了。”

所谓的上帝云雀恭弥饶有兴趣地看着沢田纲吉难得炸毛的样子,他将寿司放到玄关的柜子上,说:

“这寿司,该不会有毒吧。”

“怎么可能会有!”

“谁知道。”

“那想怎么样啊!?”

“你来试吃不就行了。”

“诶?”

被云雀恭弥强拖着进入了玄关,沢田纲吉踉跄着走着,大喊:

“我还在送外卖啦云雀学长!放手啦!”

“试吃结束就让你回去。”

云雀恭弥把沢田纲吉推到沙发上做好,转过身,走到玄关处,关好了大门。“砰。”

他揭开衬衫的第一颗扣子,在此眯起了摄人心魄的眼眸:

“那,就开始试吃吧,沢田纲吉。”

Fin.

51单片机中断程序大全

//实例42 :用定时器T0 查询方式 P2 口8 位控制LED 闪烁 //#include单片机寄存器定义的头文件 51包含 /******************************************************* *******函数功能:主函数 ******************************************************** ******/void main(void){ // EA=1;开总中断// 中断允许T0 // 定时器// ET0=1; 1的模式TMOD=0x01;// 使用定时器T0 位赋初值定时器T0 的高8 TH0=(65536-46083)/256; // 位赋初值的高8 TL0=(65536-46083)%6; // 定时器T0 T0启动定时器TR0=1;// TF0=0;P2=0xff; 无限循环等待查询while(1)// {while(TF0==0); TF0=0;P2=~P2; 位赋初值的高8 定时器TH0=(65536-46083)/256; // T0 位赋初值T0 TL0=(65536-46083)%6; //

定时器的高8 }} 1KHzT1:用定时器43 实例// 音频查询方式控制单片机发出 #include 单片机寄存器定义的头文件51 // 包含sbit sound=P3^7;将// 引脚sound P3.7 位定义为 /********************************************************** **** 函数功能:主函数 ******************************************************** ******/void main(void){// EA=1;开总中断// 中断允许ET0=1;// // 定时器T0 1的模式使用定时器// T1 TMOD=0x10; 位赋初值// TH1=(65536-921)/256; T1 定时器的高8 TL1=(65536-921)%6; // 定时器T1 的高8 位赋初值 TR1=1;// 启动定时器T1TF1=0; while(1)// 无限循环等待查询{while(TF1==0); TF1=0;

定时器中断程序设计实验

实验一定时器/中断程序设计实验 一、实验目的 1、掌握定时器/中断的工作原理。 2、学习单片机定时器/中断的应用设计和调试 二、实验仪器和设备 1、普中科技单片机开发板; 2、Keil uVision4 程序开发平台; 3、PZ-ISP 普中自动下载软件。 三、实验原理 805l 单片机内部有两个 16 位可编程定时/计数器,记为 T0 和 Tl。8052 单片机内除了 T0 和 T1 之外,还有第三个 16 位的定时器/计数器,记为 T2。它们的工作方式可以由指令编程来设定,或作定时器用,或作外部脉冲计数器用。定时器 T0 由特殊功能寄存器 TL0 和 TH0 组成,定时器 Tl 由特殊功能寄存器 TLl 和 TH1 组成。定时器的工作方式由特殊功能寄存器 TMOD 编程决定,定时器的运行控制由特殊功能寄存器 TCON 编程控制。T0、T1 在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU 转向中断处理程序,从而完成某种定时控制功能。T0、T1 用作计数器使用时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供;作计数器使用时,外部计数脉冲由 P3 口的 P3.4(或 P3.5)即 T0(或 T1)引脚输入。 方式控制寄存器 TMOD 的控制字格式如下: 低 4 位为 T0 的控制字,高 4 位为 T1 的控制字。GATE 为门控位,对定时器/计数器的启动起辅助控制作用。GATE=l 时,定时器/计数器的计数受外部引脚输入电平的控制。由由运行控制位 TRX (X=0,1)=1 和外中断引脚(0INT 或 1INT)上的高电平共同来启动定时器/计数器运行;GATE=0时。定时器/计数器的运行不受外部输入引脚的控制,仅由 TRX(X=0,1)=1 来启动定时器/计数器运行。 C/-T 为方式选择位。C/-T=0 为定时器方式,采用单片机内部振荡脉冲的 12 分频信号作为时钟计时脉冲,若采用 12MHz 的振荡器,则定时器的计数频率为 1MHZ,从定时器的计数值便可求得定时的时间。 C/-T=1 为计数器方式。采用外部引脚(T0 为 P3.4,Tl 为 P3.5)的输入脉冲作为计数脉冲,当 T0(或 T1)输入信号发生从高到低的负跳变时,计数器加 1。最高计数频率为单片机时钟频率的 1/24。 M1、M0 二位的状态确定了定时器的工作方式,详见表。

51单片机学习笔记(六)_串口中断通信+定时器2串口中断

51单片机学习笔记(六)_串口中断通信+定时器2串口中 断 51 单片机默认使用定时器1 作为串口通信的波特率发生器、定时器1 中断 通信,串口与定时器1 冲突,在遇到定时器不够用的时候可以用定时器2 #include void DelayMs(unsigned int i);void SerialInit();void SendByte(unsigned char sbyte);void SendString(unsigned char *pstr);void main(void){SerialInit();while(1); //注:必需要无限循环}/*//单片机时钟周期: 11.0592MHz 以时钟1 作为波特率发生器void SerialInit(){TMOD=0x20; // 设置T1 工作方式为方式2TH1=0xfd; //给定时器高位装初值TL1=0xfd; //给定时 器低位装初值TR1=1; //开定时器//以上是设置波特率SM0=0; //设置串口通 讯方式为方式1SM1=1; REN=1; //串口是否接收数据的开关EA=1; //总中断 打开,采用查询法时不用打开中断ES=1; //串口中断开关,采用查询法时不用打开 中断}*///单片机时钟周期:11.0592MHz 以时钟T2 作为波特率发生器void SerialInit(){PCON &= 0x7F; //波特率不倍速SMOD=0SCON = 0x50; //方式1,8 位数据,可变波特率,接收允许T2CON = 0x34; RCAP2H = 0xFF; RCAP2L = 0xDC; TH2 = 0xFF; TL2 = 0xDC;EA=1; //总中断打开,采 用查询法时不用打开中断ES = 1; //串口中断开关,采用查询法时不用 打开中断}//串口中断函数:void SerialPortInte(void) interrupt 4 //采用串口中断法 收发数据{unsigned char rbyte;if(RI){ //RI=1,判定为串口接收到了数据,RI 要清零,RI=0;rbyte=SBUF; if(rbyte==0x0A){ SendString(“换行”);}else if(rbyte==0x0D){SendString(“回车”);}else{SendByte(rbyte);}}}//串口发送一个字节:void SendByte(unsigned char sbyte){ SBUF=sbyte; //发送数据while(!TI); //等待发送完成TI=0; //清零发送标志位}//串口发送一个字符串:void

单片机中断程序大全

单片机中断程序大全公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

//实例42:用定时器T0查询方式P2口8位控制L E D闪烁#include // 包含51单片机寄存器定义的头文件void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频

#include // 包含51单片机寄存器定义的头文件sbit sound=P3^7; //将sound位定义为P3.7引脚 void main(void) {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 { while(TF1==0); TF1=0; sound=~sound; //将P3.7引脚输出电平取反 TH1=(65536-921)/256; //定时器T0的高8位赋初值 TL1=(65536-921)%256; //定时器T0的高8位赋初值 } } //实例44:将计数器T0计数的结果送P1口8位LED显示 #include // 包含51单片机寄存器定义的头文件sbit S=P3^4; //将S位定义为P3.4引脚

51单片机外部中断与定时器的实用

中断使能寄存器 通过设置中断使能寄存器 IE 的 EA 位 使能所有中断 每个中断源都有单独的使能位 可通过软件设置 IE 中相应的使能位在任何时候使能或禁能中断 中断使能寄存器 IE 的各 位如下所示 中断使能寄存器IE 位地址 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H 位符号 EA / ET2 ES ET1 EX1 ET0 EX0 EA 使能标志位 置位则所有中断使能 复位则禁止所有中断保留 ET2 定时器2 中断使能 ES 串行通信中断使能 ET1 定时器 1 中断使能 EX1 外部中断 1 使能 ET0 定时器0 中断使能 EX0 外部中断 0使能 8051 支持两个中断优先级 有标准的中断机制, 低优先级的中断只能被高优先级的中断所中断 ,而高优先级的中断不能被中断。 中断优先级寄存器 每个中断源都可通过设置中断优先级寄存器IP 来单独设置中断优先级 如果每个中断源的相应位被置位 则该中断源的优先级为高,如果相应的位被复位, 则该中断源的优先级为低, 如果你觉得两个中断源不够用 ,别急以后我会教你如何增加中断优先级 表 A-5 示出了 IP 寄存器的各位 此寄存器可位寻址 IP 寄存器 位地址 0BFH 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H 0B8H 位符号 / / / PS PT1 PX1 PT0 PX0 编号 中断源 中断向量 上电复位 0000H 0 外部中断0 0003H 1 定时器0溢出 000BH 2 外部中断1 0013H 3 定时器1溢出 001BH 4 串行口中断 0023H 5 定时器2溢出 002BH PT2 定时器 2中断优先级 PS 串行通信中断优先级 PT1 定时器 1中断优先级 PX1 外部中断1 优先级 PT0 定时器0中断优先级 PX0 外部中断0 优先级

51单片机中断系统详解

的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。 以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为T CY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/T CY ,装入THX和TLX中的数分别为: THX=(65536-N)/256 , TLX=(65536-N)%256 中断服务程序的写法 void 函数名()interrupt 中断号using 工作组 { 中断服务程序内容 } 在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下: (1)对TMOD赋值,以确定T0和 T1的工作方式。 (2)计算初值,并将初值写入TH0、TL0或TH1、TL1。 (3)中断方式时,则对IE赋值,开放中断。 (4)使TR0和TR1置位,启动定时器/计数器定时或计数。 例:利用定时器0工作方式1,实现一个发光管以1s亮灭闪烁。 程序代码如下: #include #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0x01; //设置定时器0位工作模式1(M1,M0位0,1) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1) { if(num==20) //如果到了20次,说明1秒时间 { led1=~led1; //让发光管状态取反 num=0; } } } void T0_time()interrupt 1

外部中断,定时器与串行口综合实验

硬件实验八外部中断,定时器与串行口综合实验 一.实验目的 1.进一步巩固外部中断,定时计数器和串行口的原理 2.进一步巩固外部中断,定时计数器使用和编程方法 3.进一步巩固串行口与PC机通信的实现方法 二.实验内容 独立按键按下后,单片机每隔3s将内部的RAM60H开始的存储单元中的数据发送到串行口,并在PC上的串行调试助手上显示。再次按下,则停止传送。若继续按下,则继续传送。以此类推。 三.实验连线 用杜邦线将P3.0口和独立按键连接起来 四.实验说明 本实验结合外部中断,定时计数器和串行口的知识,实现数据定式传输。独立按键的按下将产生从高到低的电平变化,可作为外部中断的输入信号。 主程序中,应首先对外部中断,定时计数器和串行口进行初始化。在外部中断程序中判断是发送还是停止发送,若需要发送数据则开启定时器,若停止发送数据则关闭定时器。在定时器中断服务程序中发送数据。 五.实验代码及其现象 程序代码: #include

#define uchar unsigned char #define uint unsigned int char code table[]="communication engineering kingsam 1006052150"; char *p; uint i; int k=0; char overtime,flag; void init() //初始化函数 { TMOD=0x21; //置工作方式 TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=0xfd; TL1=0xfd; EA=1; EX0=1; ET0=1; IT0=1; ES=1; TR1=1; //启动定时器R1 SCON=0x40; p=0x60;

51单片机中断程序大全

//实例42:用定时器T0查询方式P2口8位控制LED闪烁#include // 包含51单片机寄存器定义的头文件 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 } } //实例43:用定时器T1查询方式控制单片机发出1KHz音频#include // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为P3.7引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值

单片机定时器习题

单片机定时器/计数器、中断和串行口习题 一、填空题 1、若要启动定时器T0开始计数,则应将TR0的值设置为 1 。 2、定时器T1工作在方式0时,其定时时间为(8192-定时器初值)*2us 。方式1时定时时间又为(65536-定时器初值)*2us 。 3、串行通信有异步通信和同步通信两种基本通讯方式。 4、波特率是指每秒钟传递信息的位数。 5、如果要将现有的波特率加倍,可使用指令 MOV PCON,#80H 。 6、当串行口工作在方式1时,一帧信息共有10位,即起始位、8个数据位、停止位。 7、串行口工作在方式2时的波特率为 fosc/32或fosc/64 。 8、外部中断1的程序入口地址是 0013H 。 二、选择题 1、若要采用定时器0,方式1,如何设置TMOD__B__ A.00H B.01H C.10H D. 11H 2、单片机采用方式0时是13位计数器,它的最大定时时间是多少?_B__ A.81.92ms B.8.192ms C.65.536ms D.6.5536ms 3、以下哪项不是中断的特点? C A.分时操作 B.实时处理 C.在线编程 D.故障处理 4、外部中断响应时间至少需要__A个机器周期。 A.3 B.2 C.4 D.8 5、通过串口发送和接受数据时,在程序中使用__A___指令。 A.MOV BMOVX C.MOVC D.SWAP 6、以下哪个是中断优先级寄存器?__B A.IE B.IP C.TCON D.SCON 7、串行口中断的程序入口地址是 C 。 A 0003H B 001BH C 0023H D 000BH 三、判断题 1、8051的两个定时器T0和T1都是16位的计数器。(对) 2、单片机的计数器最高检测频率为振荡频率的1/12。(错) 3、定时/计数器的方式2具有自动装入初值的功能。(对) 4、引起中断的原因或发出中断申请的来源称为中断源。(对) 5、中断可使CPU和外设同时工作。(对) 6、定时器的特殊功能寄存器TMOD是用作中断溢出标志,并控制定时计数器的启动和停止。(错) 7、定时器控制寄存器TCON可以位寻址。(对) 8、MCS-51系列单片机的5个中断源都是可屏蔽中断。(对)

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC) 51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。 单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点: 1. 要知道寄存器的英文全拼,比如IE = interrupt中断 不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。 2. 每个知识点要有形像的出处 比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位 看到ET0, 马上要形像地定位到IE寄存器的第2位 https://www.wendangku.net/doc/1a1437756.html,/tuenhai/独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。 写程序代码时,也要把尽量把每行代码形像化。 51单片机内中断源 8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):

8052有6个中断源,它比8051多一个定时器/计数器T2中断源。 8051五个中断源分别是: (1)51单片机外部中断源 8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。 INT0也就是Interrupt 0。在这里应该看一下你的51单片机开发板的电路原理图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。 TCON的结构如下图: (a)定时器T0的运行控制位TR0

第四章中断定时串行口例题习题

中断定时/计数器串行口部分例题习题 一、填空: 1、单片机CPU 和外设进行数据交换时常用的方式有无条件转换、查询方式、中断方式三种 2、中断系统中共有INTO 、INT1 、T0 、T1 、串行口五个中断源,其中优先级最高的是INTO 、优先级最低的是串行口。 二、选择: 1、6MHz晶振的单片机在定时工作方式下,定时器可能实现的最小定时时间是。 A.1 u s B.2 u s C.4 u s D.8 u s ' 2、12MHz晶振的单片机在定时工作方式下,定时器可能实现的最小定时时间是。 A.1 u s B.2 u s C.4 u s D.8 u s 3、12MHz晶振的单片机在定时工作方式下,定时器可能实现的最大定时时间是。A.4096 u s B.8192 u S C.1638 u s D.32768 u s 4、以下所列特点,不属于串行工作方式0的是。 A.波特率是固定的,为时钟频率的十二分之一 B.8位移位寄存器 C.TI和RI都须用软件清零 D.在通信时,须对定时器l的溢出率进行设置 5、通过串行口发送或接收数据时,在程序中应使用。 A.MOV指令 B.MOVX指令 C.MOVC指令 D.SWAP指令 6、用MCS-51用串行扩展并行I/O口时,串行接口工作方式选择(A) (A)方式0 (B)方式1 (C)方式2 (D)方式3 答BADDAA 三、判断题 1.MCS-51单片机共有五个中断源,因此相应地在芯片上就有五个中断请求输入引脚。( ) 2.当全局中断允许位EA=0时,系统将不响应任何中断。( ) 3.在MCS-51单片机中,高级中断可以打断低级中断形成中断嵌套。( ) 4.在一般情况下,MCS-51单片机允许同级中断嵌套。( ) 5.只要有中断出现,CPU就立即响应中断。( )

51单片机中断程序大全

//实例42 :用定时器TO查询方式P2 口8位控制LED闪烁#include // 包含 51 单片机寄存器定义的头文件/************************************************************** 函数功能:主函数 void main(void) { // EA=1; // 开总中断 // ETO=1; // 定时器 TO 中断允许 TMOD=OxO1; // 使用定时器 TO 的模式 1 THO=(65536-46O83)/256; // 定时器 TO 的高 8 位赋初值 TLO=(65536-46O83)%256; // 定时器 TO 的高 8 位赋初值 TRO=1; // 启动定时器 TO TFO=O; P2=Oxff; while(1)// 无限循环等待查询 { while(TFO==O) TFO=O; P2=~P2; THO=(65536-46O83)/256; // 定时器 TO 的高 8 位赋初值

TL0=(65536-46083)%256; // 定时器 T0 的高 8 位赋初值 } // 实例43 :用定时器T1 查询方式控制单片机发出1KHz 音频#include // 包含 51 单片机寄存器定义的头文件 sbit sou nd=P3^7; // 将 sound 位定义为 P3.7 引脚 /************************************************************** 函数功能:主函数 **************************************************************/ void main(void) { // EA=1; // 开总中断 // ET0=1; // 定时器 T0 中断允许 TMOD=0x10; // 使用定时器 T1 的模式 1 TH1=(65536-921)/256; // 定时器 T1 的高 8 位赋初值 TL1=(65536-921)%256; // 定时器 T1 的高 8 位赋初值 TR1=1; // 启动定时器 T1 TF1=0; while(1)// 无限循环等待查询 {

按键和定时器中断综合应用-秒表计时器

& INT1按键中断INT0# 和T0中断的综合应用 ‐简易秒表计时器 范例1:汇编源代码 范例2:C51源代码

P7 EQU 0F8H ORG 0100H #60H P6 EQU 0E8H D1 EQU 0FEH //数码管个位EQU 0FDH MAIN: MOV SP ,#60H //设置堆栈 MOV P2,#0FFH //关P2口LED MOV TMOD,#00H D2 //十位D3 EQU 0FBH // 百位 VARX DATA 30H //计数变量DATA 31H MOV TH0,#4BH MOV TL0,#0FDH //设置T0MOV R7,#20MOV VARX,#0 //置计数变量0DIG1 //BCD 个位DIG2 DATA 32H //BCD 十位DIG3 DATA 33H //BCD ,SETB ET0SETB EX0SETB IT0//百位ORG 0000H LJMP MAIN SETB EX1SETB IT1 SETB EA //允许相关中断 ORG 0003H LJMP KY1INT //KY1中断ORG 000BH LJMP T0INT //T0中断ORG 0013H KY2INT //KY2LJMP 中断

CONV: MOV A,VARX //读计数变量MOV A,DIG2 //读十位BCD MOV B,#100DIV AB DIG3A MOVC A,@A+DPTR MOV P7,A P6#D2//MOV DIG3,A MOV A,B MOV B,#10MOV P6,#D2 查表送显示ACALL DELAY //扫描延时A,DIG3//DIV AB MOV DIG2,A DIG1B MOV 读百位BCD MOVC A,@A+DPTR MOV P7,A MOV DIG1,B //转换为3位BCD DISP: MOV A,DIG1 //读个位BCD MOV DPTR,#SEGTBL MOV P6,#D3 //查表送显示ACALL DELAY CONV //MOVC A,@A+DPTR MOV P7,A P6,#D1//LJMP 返回读取VARX MOV 查表送显示 ACALL DELAY //扫描延时

51单片机每个外部中断和定时器中断 应用模版

第一步,中断配置 /************************************************************ 函数名:INT0_Config 功能:配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。 输入参数: 输出参数: ************************************************************/ void INT0_Config(void) { IT0=1; //中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变); EX0=1; //外部中断0的中断开关,每个中断源都有自己的中断开关。 EA=1; //打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。 } 第二步,中断服务,也就是cpu被中断后所要做的事。 /************************************************************ 函数名:Isr_INT0 功能:中断服务 输入参数: 输出参数: ************************************************************/ void Isr_INT0() interrupt 0 //interrupt表明该函数是中断函数,后面的标号表示是哪个中断源产生的中断。{ //(INT0)为0, Timer0为1,INT1为2,Timer3,串口中断为4。 // Add your code here //自己想要中断后发生的程序 } 第三部主函数 /************************************************************ 函数名:main 功能:主函数 输入参数: 输出参数: ************************************************************/ void main() { INT0_Config();//调用这个函数来配置外部中断 while(1) { //Add your code here //CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0, //执行完成后,返回从断点处继续往下执行原来的代码。 } }

中断系统定时器计数器和串行口知识点

第四章中断系统、定时器/计数器和串行口 考试知识点: 1、中断系统 (1)中断的概念 中断:CPU正在执行程序的过程中,由于CPU之外的某种原因,有必要暂停该程序的执行,转而去执行相应的处理程序,待处理程序结束之后,再返回原程序断点继续运行的过程。 ①定时器控制寄存器TCON 格式如下: 位 D7 D6 D5 D4 D3 D2 D1 D0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 位地址 8F 8E 8D 8C 8B 8A 89 88 IT0=0,为电平触发方式。低电平有效。 IT0=1,为边沿触发方式。输入脚上电平由高到低的负跳变有效。 IE0=1,说明有中断请求,否则IE0=0。 ②中断允许控制寄存器IE 其各位的定义如下: 位 D7 D6 D5 D4 D3 D2 D1 D0 代号 EA —— ES ET1 EX1 ET0 EX0 EA: 开放或禁止所有中断。ES:开放或禁止串行通道中断。ET1:开放或禁止定时/计数器T1溢出中断。EX1:开放或禁止外部中断源1。ET0:开放或禁止定时/计数器T0溢出中断。EX0:开放或禁止外部中断源0。 ③中断优先级控制寄存器IP 各位的定义如下: 位 D7 D6 D5 D4 D3 D2 D1 D0 代号——— PS PT1 PX1 PT0 PX0 1为高优先级、0为低优先级。如果同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求被响应。查询次序为:外部中断0、T0中断、外部中断1、T1中断、串行中断。(4)响应中断的必要条件 ①有中断源发出中断请求。 ②中断允许寄存器IE相应位置“1”,CPU中断开放(EA=1)。 ③无同级或高级中断正在服务。 ④现行指令执行到最后一个机器周期且已结束。若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令时,执行完该指令且其紧接着的指令也已执行完。

51单片机中断程序大全

( //实例42:用定时器T0查询方式P2口8位控制LED闪烁 #include<> // 包含51单片机寄存器定义的头文件 void main(void) { // EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位赋初值 : TL0=(65536-46083)%256; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 TF0=0; P2=0xff; while(1)//无限循环等待查询 { while(TF0==0) ; ] TF0=0; P2=~P2; TH0=(65536-46083)/256; //定时器T0的高8位赋初值 TL0=(65536-46083)%256; //定时器T0的高8位赋初值 //实例43:用定时器T1查询方式控制单片机发出1KHz音频 #include<> // 包含51单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为引脚 void main(void) ( {// EA=1; //开总中断 // ET0=1; //定时器T0中断允许 TMOD=0x10; //使用定时器T1的模式1 TH1=(65536-921)/256; //定时器T1的高8位赋初值 TL1=(65536-921)%256; //定时器T1的高8位赋初值 TR1=1; //启动定时器T1 TF1=0; while(1)//无限循环等待查询 — { while(TF1==0); TF1=0;

定时器和计数器应用C语言程序

1、定时器应用实验 单片机的P1口上接有8只LED。采用定时器T0的方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮一次。 #include Char i=100;/*给变量i赋初值*/ void main( ) {TMOD=0x01;/*设置定时器T0为方式1*/ TH0=0xee;/*向TH0写入初值的高8位*/ TL0=0x00;/*向TL0写入初值的低8位*/ P1=0x00;/*P1口8只LED点亮*/ EA=1;/*总中断允许*/ ET0=1;/*定时器T0中断允许*/ TR0=1;/*启动定时器T0*/ while(1) ;/*无穷循环,等待定时中断*/ } /*以下为定时器T0的中断服务程序*/ void T0_int(void) interrupt 1 {TH0=0xee;/*给T0装入16位初值,计4608个数后,T0溢出*/ TL0=0x00; i--;/*循环次数减1*/ if(i<=0) {P1=~P1;/*P1口按位取反*/ i=100;/*重新设置循环次数*/ } } 2、计数器应用实验 采用定时器T1的方式1的中断计数方式。计数输入引脚T1(P3.5)上外接开关K1,作为计数信号输入。按4次K1后,P1口的8只LED闪烁不停。 #include void Delay(unsigned int i)/* 定义延时函数Delay( ),i是形式参数,不能赋初值*/ {unsigned int j; for(;i>0;i--) /* 变量i由实际参数传入一个值,因此i不能赋初值*/ for(j=0;j<125;j++) {;} /*空函数*/ } void main( ) /*主函数*/ {TMOD=0x50;/*设置定时器T1为方式1计数*/ TH1=0xff;/*向TH1写入初值的高8位*/ TL1=0xfc;/*向TL1写入初值低8位*/ EA=1;/*总中断允许*/ ET1=1;/*T1中断允许*/ TR1=1;/*启动T1*/

51单片机外部中断实验

实验6 外部中断实验 (仿真部分) 一、实验目的 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容 在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。P1.0~ P1.3接LED灯,以显示计数信号。 三、实验说明 编写中断处理程序需要注意的问题是: 1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。 2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。 3.INT0和INT1分别接单次脉冲发生器。P1.0~ P1.3接LED灯,以查看计数信号. 四、硬件设计 利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。设计出如下的硬件电路。晶振频率为12MHz。 五、参考程序框图 设置P1.0~ 3初始状态

主程序框图 INT0中断处理程序框图 实验6 外部中断实验 (实验箱部分) 1.实验目的 认识中断的基本概念 学会外部中断的基本用法 学会asm和C51的中断编程方法 2.实验原理 图按键中断 【硬件接法】 控制LED,低电平点亮 INT1接按键,按下时产生低电平 【运行效果】 程序工作于中断方式,按下按键K2后,LED点亮,秒后自动熄灭。

8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。/INT0和/INT1中断的入口地址分别是0003H和0013H。 TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。 如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。下降沿触发是“一次性”的,每次中断只会有1个下降沿,因此中断处理程序执行完后可以立即返回主程序,而不必等待中断请求信号恢复为高电平,这是一个重要的技巧。 3. 实验步骤 参考实验例程,自己动手建立Keil C51工程。注意选择CPU类型。Philips半导体的P89V51RB2。 编辑源程序,编译生成HEX文件。 ISP下载开关扳到“00”,用Flash Magic软件下载程序HEX文件到MCU BANK1,运行。 运行Flash Magic软件。各步骤操作如下: Step 1: COM Port:选择实际使用的串行口,通常为COM1; Baud Rate:波特率不可设置得过高,推荐用9600; Device:请选择正确的型号89V51RB2; Interface:选择None(ISP)。 Step 2:请勾中“Erase blocks used by Hex File”。 Step 3:装入你的程序文件,注意必须为HEX格式。 Step 4: 请勾中“Verify after programming”(编程后校验); 对其它几项如果不了解,请不要勾中。 Step 5: 请先给电路板上电,同时按住复位键不松手,然后点击Flash Magic软件的“Start”按

51单片机汇编语言教程:18课单片机中断系统

51单片机汇编语言教程:第18课-单片机中断系统

MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。整个中断系统的结构框图见下图一所示。

<51单片机中断系统结构> 如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。 中断请求源: (1)外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX 其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX 即8CH,当然,我们也能用位操作指令SETB EA SETB ET1SETB EX1 来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH 外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: ORG0000HLJMP START ORG0030H START:。 这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、

相关文档
相关文档 最新文档