51单片机实现定时器中断0-F

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sfr P0M0 = 0x94;
sfr P0M1 = 0x93;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;
uint count,i,j;
uchar code leddata[] = {
                0xC0,  //"0"
                0xF9,  //"1"
                0xA4,  //"2"
                0xB0,  //"3"
                0x99,  //"4"
                0x92,  //"5"
                0x82,  //"6"
                0xF8,  //"7"
                0x80,  //"8"
                0x90,  //"9"
                0x88,  //"A"
                0x83,  //"B"
                0xC6,  //"C"
                0xA1,  //"D"
                0x86,  //"E"
                0x8E,  //"F"
                0x89,  //"H"
                0xC7,  //"L"
                0xC8,  //"n"
                0xC1,  //"u"
                0x8C,  //"P"
                0xA3,  //"o"
                0xBF,  //"-"
                0xFF,
                0xFF
};
uchar code weidata[] = {
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80,
    0x01,0x02,0x04,0x08,
    0x10,0x20,0x40,0x80,
};
void delay(uint ms){
    uint i,j;
    for(i = 0;i < ms;i++)
        for(j = 0;j < 1210;j++);
}
void timer_init(){
        TMOD = 0x01;
        TH0 = 0x3c;
        TL0 = 0x0b0;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
}
void timer_init1() interrupt 1{
        TH0 = 0x3c;
        TL0 = 0x0b0;
        count++;
        if(count == 20){
                count = 0;
                i++;
                if(i == 16){
                    i = 0;
                }
        }
}
void display(){
    P0 = leddata[i];
    P2 = ~weidata[i];
 }
void main(){
    P0M0 = 0x00;
    P0M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    timer_init();
    while(1){
        display();
    }
}

原文地址:https://www.cnblogs.com/weimin1314/p/8260573.html

时间: 2024-08-26 10:34:54

51单片机实现定时器中断0-F的相关文章

51单片机的定时器

今天想尝试使用串口通信来控制舵机旋转的时候,由于同时用到了定时器T0和T1(用来设定波特率).程序有点问题,运行不畅,所以现在想通过写篇文章重新来梳理对51单片机这两个定时器的理解. STC89C51系列单片机有两个定时器:定时器T0.定时器T1 一.首先了解到51单片机的常用晶振是12MHz的,内部一般是12分频的,也就是12T.所以每计数一次需要1us的时间 二.定时器的工作模式有四种,模式0,1,2的工作模式对T0 .T1都是相同的,但是模式3只有T0才有: 模式0:13位计时器,有TL0

AVR单片机教程——定时器中断

本文隶属于AVR单片机教程系列. ? 中断,是单片机的精华. 中断基础 当一个事件发生时,CPU会停止当前执行的代码,转而处理这个事件,这就是一个中断.触发中断的事件成为中断源,处理事件的函数称为中断服务程序(ISR). 中断在单片机开发中有着举足轻重的地位--没有中断,很多功能就无法实现.比如,在程序干别的事时接受UART总线上的输入,而uart_scan_char等函数只会接收调用该函数后的输入,先前的则会被忽略.利用中断,我们可以在每次接受到一个字节输入时把数据存放到缓冲区中,程序可以从缓

51单片机实现定时器00H-FFH、定时器000-255

#include< reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 = 0x94; sfr P0M1 = 0x93; sfr P2M0 = 0x96; sfr P2M1 = 0x95; uchar count; uchar i,j,num; uchar code leddata[]={ 0xC0, //"0" 0xF9, //"1" 0xA4, //"

51单片机实现外部中断00H-FFH、000-255、0000-1023

外部中断00H-FFH #include< reg51.h> #define uint unsigned int #define uchar unsigned char sfr P0M0 = 0x94; sfr P0M1 = 0x93; sfr P2M0 = 0x96; sfr P2M1 = 0x95; uchar count; uchar i; uchar code leddata[]={ 0xC0, //"0" 0xF9, //"1" 0xA4, /

51单片机学习笔记【0】——基础知识

一.单片机三大资源 1.Flash--程序存储空间 相当于计算机的硬盘,可实现断电后数据不丢失. 2.RAM--数据存储空间 相当于计算机的内存,用来存储程序运行过程中产生和需要的数据,断电后数据丢失,优点是读取速度快,可无限次写入. 3.SFR--特殊功能寄存器 单片机每个功能都对应一个 多个SFR,用户通过对SFR的读写来实现单片机的功能. 二.单片机的最小系统 1.电源 主流单片机采用5V和3.3V的电压,供电电路40引脚接+5V,通常也成为VCC或VDD,代表电源正极:20引脚接GND,

【转】 51单片机中断学习

一.中断的概念    CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生):    CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务):    待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 二.中断源 在51单片机中有5个中断源 中断号          优先级                    中断源                    中断入口地址 0               1(最高)   

51单片机中断interrupt……using……

51单片机中断细节的一些问题. interrupt0:外部中断0interrupt1:定时器中断0interrupt2:外部中断interrupt3:定时器中断1interrupt4:串口 using 0 是第0组寄存器: using 1 是第1组寄存器: using 2 是第2组寄存器: using 3 是第3组寄存器:51单片机内的寄存器是R0--R7(不是R0-R3)R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1.RS0位决定的.using 0时设置 RS1=0,RS

51单片机课程设计:基于MQ-3的酒精浓度报警器

51单片机课程设计:基于MQ-3的酒精浓度报警器 本程序用于将MQ-3上读取到的模拟信号转换为对应的数字信号,经51单片机处理后,在数码管显示,同时具有报警功能,当检测值高于预警值,蜂鸣器报警.除了可以检测MQ-3酒精浓度模块的AD值,也适用于MQ系列的其他模块,原理基本都相同,都是将读取到的AD值转换为数字信号,程序修改后,如果接线方法正确,可以在吉林农业大学51开发板上完美运行,相关工程文件见最下方附件. /*************************************说明***

[转]51单片机 11.0592MHz 产生115200 波特率

连接:http://homezzy.blog.hexun.com/29601793_d.html 今天解决了一个小问题(查书后才得到确切结论...)用51单片机+11.0592的晶振,如何产生115200的波特率? 本来感觉这个小意思,直接初始化定时器1,程序如下: void init_com( void ) { SCON = 0x50 ; //串口工作方式1,8位UART,波特率可变 TMOD |= 0x20 ; //定时器1,工作方式2,自动再装入8位定时器 PCON |= 0x80 ; /