• SCM文章10课时:定时器中断


    JP3遇见P0口。

    #include<reg51.h>
    #define uchar unsigned char
    uchar flag,num;
    uchar code smg[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    //声明子函数
    void init();
    void initTimer0();
    
    void main()
    {
    	init();
    	initTimer0();
    	while(1)
    	{
    		//一句代码都没有
    	}
    }
    
    void timer0() interrupt 1
    {
    	//又一次装初值,由于要循环定时,定时50毫秒
    	TH0 = (65536-50000)/256;
    	TL0 = (65536-50000)%256;
    	flag++;
    	if(flag == 20)
    	{
    		//每隔一秒数值加1
    		flag = 0;
    		P0 = smg[num];
    		num++;
    		if(num == 10)
    		{
    		   	num = 0;
    		}
    
    	}
    
    }
    
    void initTimer0()
    {
    	//装初值。定时50毫秒
    	TH0 = (65536-50000)/256;
    	TL0 = (65536-50000)%256;
    	//选择定时器T0方式1
    	TMOD = 0x01;
    	//开中断同意位
    	ET0 = 1;
    	//开CPU总中断
    	EA = 1;
    	//启动定时器
    	TR0 = 1;
    }
    
    void init()
    {
    	flag = 0;
    	num = 0;
    
    }
    两个定时器的使用方式同样,如今就总结一下定时器的使用步骤:

    1、装初值

    2、确定工作方式,相关的寄存器是TMOD

    3、开中断同意ET0或者ET1,,和EA

    4、启动定时器

    5、写中断服务程序

    void 函数名() interrupt 1(假设选择定时器1,代号就是3)

    {

    //又一旦早期安装值

    }

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Linux(CentOS)下安装OMNet++
    Linux(CentOS)安装JDK
    给电脑安装Linux系统(CentOS)
    OmNet++遇到的问题
    数论倒数总结
    [AHOI2007]密码箱
    [AHOI2005]约数研究
    Spark scala groupBy后求和
    Scala Seq创建简单的Spark DataFrame
    Spark DataFrame分组后选取第一行
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4839252.html
Copyright © 2020-2023  润新知