单片机开发中断及一些理解

来源:本站
导读:目前正在解读《单片机开发中断及一些理解》的相关信息,《单片机开发中断及一些理解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机开发中断及一些理解》的详细说明。
简介: 在一般情况下都是定时器与中断一起使用的,如:定时器时间到发生中断,一般都是IE TMOD TCON 三个寄存器联合使用 TCON 控制TR0 TR1 运行与停止 TMOD 控制工作模式 IE 控制总中断 与 对应的那个中断的开关如 IE =1 ET0 =1 .

强制类型转换

a = 0x0000; b = 0xaa55;(uint16)

a = (uint8)(b);

a = 0x55;

a = 0x00; b = 0x10;

a = (bit)(表达式);

中断响应条件

一、中断源有中断请求;

二、此中断源的中断允许位为1;

三、CPU开中断(即EA=1);

以上三个条件同时满足时,CPU才有可能响应中断。

EA =1;开总中断

EX0=1;开外部中断0 都是IE寄存器

触发方式 电平与跳变沿

IT0 = 0; 跳边沿触发由于单片机上电所有寄存器就是0 可以不用设置

电平触发方式不好,会始终不走了停在中断当中,所以应该采用跳变沿方式

IT1 =1;跳变沿方式 或TCON =0X01 就是IT0 =1;

中断处理函数原型(中断服务程序原型) 记住中断函数不需要声明

void timer1() interrupt0 using 0

timer1() 函数名

interrupt 表示是中断处理函数

0 表示是第几个中断源的处理函数

using 0 表示是使用第几组工作寄存器一般在C语言里面编译器屏蔽了会自动分配程序员一般不用关心。

注意:如果在中断处理函数中进行处理数据不能处理的数据量太大,因为定时器时间已到它就会又进入下一个中断处理函数,也就是这个中断处理函数还没有处理完下一个中断又来了。这样会造成结果错误或异常。

定时器:

定时器内部是有2个8位的寄存器控制,里面装一些数没来一个机器周期这个数自动加1或减1(大部分是加1 STC就是加1因为好做)到2个字节加满减满为止它会触发一次中断进入中断函数。定时器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。一个是TMOD 用于选择定时器、计数器 T0,T1的工作模式和工作方式。另一个是TCON 用于控制TO,T1的启动和停止,同时包含了T0,T1的状态,这2个寄存器在单片机复位时候所有位都被清0.

TMOD 是不能位寻址的,因为它的地址是89H不能被8整除。只能赋值或者 进行 与 或 运算进行赋值 ,其中有位是C/T 是把它配置成定时器还是计数器 0 表示是定时器 M0,M1 这2位进行是定时器的模式几共4种模式其中方式1为16 高8位 TH0,低8位在 TL0 (65536-50000)/256 这就是高8位 (65536-50000)%6 放入低8位 是大约50毫秒 前提是晶振为12兆赫。凡是用11.0592 的晶振是因为单片机要进行 串口通讯因为实现标准的波特率 4800 2400 115200 好计算。才选用11.0592的晶振。单片机的晶振可以选12兆一下的晶振都可以。12兆算是最快的速度了。当然不排除其他高速的单片级,可能达到更高运算速度。定时器最高一次定时为65535的数字,也就是大概65毫秒,因为是16位 高8位低8位。所以如果用定时器长时间定时可以 设置多次定时然后在main里面判断。实现长时间定时。定时器是一个加1的寄存器。初值最小为0 。最大65535 ,单片机做延时不占用MCU的资源比用 while 或 for循环好,能提高效率,当时浪费一个I/O口,所以用时综合考虑。

在一般情况下都是定时器与中断一起使用的,如:定时器时间到发生中断,一般都是IE TMOD TCON 三个寄存器联合使用 TCON 控制TR0 TR1 运行与停止 TMOD 控制工作模式 IE 控制总中断 与 对应的那个中断的开关如 IE =1 ET0 =1 .

最重要的是定时器的启动与停止 直接控制 TR0 TR1这2位 置1 置0就可以了。

也就是是说中断里可以 把它置为0 置为1 ,或者有初值自加的也清0.

还有就是全局变量名与局部变量名不能相同如果相同,局部变量会改变全局变量的值。到时候结果不是期望值。

在C语言的库函数中,floor函数的语法如下:

#include

double floor( double arg );

功能: 函数返回参数不大于arg的最大整数。例如,

x = 6.04;

y = floor( x );

y的值为6.0.

与floor函数对应的是ceil函数,即上取整函数。

有趣的是,floor在英文中是地板的意思,而ceil是天花板的意思,很形象地描述了下取整和上取整的数学运算。

说明:如果任一参数为非数值参数,则 FLOOR 将返回错误值#VALUE!或#NAME?。

如果 number 和 significance 符号相反,则函数 FLOOR 将返回错误值#NUM!。

不论 number 的正负号如何,舍入时参数的绝对值都将减小。如果 number 恰好是 significance 的倍数,则无需进行任何舍入处理。

以上为51单片机个人总结希望懂单片机的爱好者能够指出错误以及建议。

提醒:《单片机开发中断及一些理解》最后刷新时间 2024-03-14 01:09:33,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机开发中断及一些理解》该内容的真实性请自行鉴别。