> 文章列表 > 佛科院单片机原理4——中断系统、定时/计数器及串行通信

佛科院单片机原理4——中断系统、定时/计数器及串行通信

佛科院单片机原理4——中断系统、定时/计数器及串行通信

第一章 中断

1.1 对中断的理解

https://blog.csdn.net/weixin_63568691/article/details/128498447

第二章 定时器

2.1 对定时器的理解:

  其实不管定时器的内部结构,其实功能就跟我们的闹钟的定时功能一样,到预设的时间就会提示我们。

2.2 使用定时器的步骤

  1. 初始化定时器
    (1)配置定时器模式:TMOD(一般为模式1)
    (2)根据定时时间设置定时器初值:THx,TLx(x指的是具体的定时器)

定时器初值计算

(3)开启中断,包括定时器中断ETx和总中断EA
(4)开启计数TRx
2. 编写中断服务函数
(1)在中断入口地址区间设置跳转指令,跳转到中断服务函数处
(2)编写中断服务函数注意压栈保护主函数用到的寄存器数据,出栈再弹出

为什么在中断入口地址区间设置跳转指令?因为两个相邻的中断入口地址之间只有8个字节的空间,完全不够编写中断服务函数,所以将中断服务函数编写在其他地方,而让中断入口地址真正地成为一个入口

2.3应用

2.3.1软件的安装

https://download.csdn.net/download/weixin_63568691/87668952

2.3.2题目一

  利用定时/计数器TO从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHz。试设计程序。

   ORG 0000HLJMP MAINORG 000BHSJMP TIM0ORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#0D8H ;10msMOV TL0,#0F0HSETB ET0SETB EASETB TR0LOOP1:SJMP LOOP1TIM0:;重装载初值MOV TH0,#0D8HMOV TL0,#0F0H;累加计数INC R0;判断是否大于20msCJNE R0,#2,SIGN1;大于CPL P1.0SIGN1:;判断是否大于1sCJNE R0,#100,SIGN2;大于CPL P1.0MOV R0,#00HSIGN2:RETIEND

第三章 串行通信

3.1 串口通信的理解:

https://blog.csdn.net/weixin_63568691/article/details/128274778

3.2 串行通信步骤:

  1. 定时器初始化(一般为模式2,不用开中断)

定时器初值计算:波特率 = 2 *(SMOD)/ 32 * 溢出率
溢出率 = (256 - 初值)* 12 / 晶振频率
假设晶振频率为12MHZ,SMOD=0时即初值 = 256 - (10^6 / 波特率 / 32)

  1. 串口初始化:
    (1)设置模式:SCON(一般为模式1)
    (2)开启中断:ES,EA

3.3 应用

  串口接口工作于方式1,波特率为1200bps,晶振频率为12MHZ,初始化结束后打开串口接口使其处于准备接受状态

	ORG 0000HLJMP MAINORG 0023HLJMP UARTORG 0030HMAIN:MOV SP,#70HMOV TMOD,#20HMOV TH1,#230MOV TL1,#230MOV SCON,#50HSETB TR1SETB ESSETB EALJMP $ORG 0100HUART:JNB RI,RXCLR RIMOV R0,SBUFRX:RETIEND