51单片机学习 中断及定时/计数实验

2021-12-01 15:25:59 浏览数 (1)

文章目录

  • 一、实验目的
  • 二、实验内容

一、实验目的

熟悉单片机的定时/计数功能 掌握定时/计数初始化编程方法

二、实验内容

仿真电路图如下:

查询方式汇编语言程序如下:

代码语言:javascript复制
      ORG  0000H
      JMP  START
      ORG  0100H
      
START:
      MOV TMOD,#00H      ;工作方式0   13位定时器
      MOV TH1,#8CH       ;高八位
      MOV TL1,#1AH       ;低八位
      SETB TR1           ;启动TR1定时

Loop:
      JNB TF1,$		    ;溢出标志TF1为0的时候,就等待溢出
      MOV TH1,#8CH      ;重装初值
      MOV TL1,#1AH
      CPL P1.0          ;取反,波形跳转一次
      CLR TF1           ;置零 溢出标志位
      SJMP LOOP		;继续循环  重装初值  定时
   
      END

仿真结果如下:

T1工作于方式 0 定时,P1.0口输出周期为 8ms 的方波,由仿真结果可以看到,一格为 2 ms,输出方波一个周期占了 4 格。

仿真电路图如下:

中断方式汇编语言程序如下:

代码语言:javascript复制
        ORG    0000H         ;复位入口
        LJMP   MAIN     
        ORG    000BH         ;定时器中断程序T0_0入口
        LJMP   T0_0     
        ORG    001BH         ;计数器中断中断程序T1_1入口
        LJMP   TI_1   
        ORG    0030H         ;主程序入口
MAIN:   
        SETB   P3.0          ;启动p3.0,允许输出方波
        MOV    TMOD,#60H     ;T1设置为计数方式2:0110,T0设置为定时方式0:0000
	    MOV    TH0,#8CH	     ;T0定时初值 
	    MOV    TL0,#1AH      
	    MOV    TH1,#82H	     ;T1计数初值
		MOV    TL1,#82H      
		MOV    IE,#8AH       ;中断允许控制寄存器:10001010  EA总中断打开  ET0 ET1打开
		SETB   TR0           ;启动定时器T0
		;SETB   EA           ;开中断
		;SETB   ET0          ;允许T0中断
		SETB   TR1           ;启动计数器T1
		;SETB   ET1          ;允许T1中断
	
LOOP: 
        MOV     R0,#09H
	
WAIT:
        MOV    A, R0
		MOV    DPTR,#TAB	 
		MOVC   A,@A DPTR	 ;变址寻址  查表指令
		MOV    P1,A              ;结果从P1口送出
		CJNE   R0,#0FFH,WAIT     ;R0不等于0FFH,跳转到WAIT -1
		LJMP   LOOP              ;(R0)=0FFH,跳到LOOP
	
T0_0:
        CPL    p3.0              ;求反,波形反转一次,间隔4ms
		MOV    TH0,#8CH          ;重装T0初值
		MOV    TL0,#1AH
        RETI                     ;中断返回
TI_1:
        DEC    R0                ;减1
        RETI                     ;中断返回

TAB:  
       DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H     ;定义字节

       END

仿真结果如下:

定时器T0设置为定时,T1设置为计数,定时8ms,计数 125 个脉冲,可实现每隔1s,在七段 LED 码上显示倒计时钟: 9、8、7…0。

作者:叶庭云 CSDN:https://yetingyun.blog.csdn.net/

0 人点赞