登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 单片机

[复制链接]
发表于 2022-1-27 18:36:44 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-27
结束时间: 2022-01-27
信号灯(对矩阵按钮与led灯的 综合应用同时对中断的加强)
利用中断实现随着数码管的时间减少同时led的发生变化
#include<reg52.h>

unsigned char code ledchar[]={
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
    0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char ledbuff[7]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
bit flag=1;
unsigned char T0RH=0;
unsigned char T0RL=0;
sbit  ENLED=P1^4;
sbit ADDR3=P1^3;
void configTimer0(unsigned ms);
void trafficlight();


void main()
{
  EA=1;
        ENLED=0;
        ADDR3=1;
        configTimer0(1);
        while(1)
        {
        if(flag==1)
        {
        flag=0;
        trafficlight();
       
        }
        }

}
void configTimer0(unsigned ms)
{
unsigned char tmp;
        tmp=11059200/12;
        tmp=tmp*ms/1000;
        tmp=65536-tmp+13;
        T0RH=(unsigned char )(tmp>>8);
        T0RL=(unsigned char )tmp;
        TMOD=TMOD&0xF0;
        TMOD=TMOD|0x01;
        TH0=T0RH;
        TL0=T0RL;
        ET0=1;
        TR0=1;
}

void trafficlight()
{
  unsigned char color=3;
        unsigned char timer=0;
        if(timer==0)
        {
        switch(color)
        {
                case 0: color=0;timer=39;ledbuff[6]=0x3F;break;
                                case 1: color=1;timer=3;ledbuff[6]=0xE7;break;
                                case 2: color=2;timer=1;ledbuff[6]=0xFC;break;
                default:break;
       
        }
       
        }
        else
        {
        timer--;
        }
ledbuff[0]=ledchar[timer%10];
        ledbuff[1]=ledchar[timer/10];
}

void LedScan()
{
         static unsigned char i=0;
P0=0xFF;
        P1=(P1&0xF8)|i;
        P0=ledbuff[i];
        if(i<6)
                i++;
        else
                i=0;
}

void InterruptTimer0() interrupt 1
{
static unsigned int trmls=0;
        TH0=T0RH;
        TL0=T0RL;
        LedScan();
        trmls++;
        if(trmls>=1000)
        {
        trmls=0;
                flag=1;
        }


}

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表