佛科院单片机原理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 0000H
        LJMP MAIN

        ORG 000BH
        SJMP TIM0

        ORG 0030H
   MAIN:
        MOV TMOD,#01H
        MOV TH0,#0D8H ;10ms
        MOV TL0,#0F0H
        SETB ET0
        SETB EA
        SETB TR0

    LOOP1:

        SJMP LOOP1

   TIM0:
        ;重装载初值
        MOV TH0,#0D8H
        MOV TL0,#0F0H

        ;累加计数
        INC R0

        ;判断是否大于20ms
        CJNE R0,#2,SIGN1
        ;大于
        CPL P1.0
    SIGN1:

        ;判断是否大于1s
        CJNE R0,#100,SIGN2
        ;大于
        CPL P1.0
        MOV R0,#00H
   SIGN2:
        RETI

        END

第三章 串行通信

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 0000H
       LJMP MAIN

       ORG 0023H
       LJMP UART

       ORG 0030H
   MAIN:
        MOV SP,#70H
        
        MOV TMOD,#20H
        MOV TH1,#230
        MOV TL1,#230
        
        MOV SCON,#50H
        
        SETB TR1
        SETB ES
        SETB EA

        LJMP $

       ORG 0100H
   UART:
        JNB RI,RX
        CLR RI
        MOV R0,SBUF
     RX:
        RETI

        END

你可能感兴趣的:(单片机原理及应用——王效华,佛科院考试,单片机,学习)