各位看下下面这段程序,想使用计数器1来实现

2019-07-15 18:18发布

本帖最后由 sanmaodeai 于 2014-10-16 21:55 编辑

整个程序大概需要实现的内容是:
一个预设值,一个计数值,都显示在1602液晶上,当计数值=预设值时,led做一个操作
预设值可以用按键来修改,计数值使用计数器1实现,按键触发,程序虽然写了,但是实现不了,请
各位看看是什么原因?


#include<reg52.h>
#include<intrins.h>
#include“lcd1602.h”#include"keyscan.h"

#define uchar unsigned char
#define uint unsigned int

sbit key1=P1^5;
sbit key2=P1^6;
sbit key3=P1^7;
sbit led=P1^1;

uint flag,flag1;
uint t1;

void delay(uint t)
{
        uchar i;
        for(t;t--;t>0)
        {
                for(i=105;i--;i>0);
        }
}

void init()
{
        TMOD=0x50;                 //计数器1工作在16位计数模式
        TH1=0xff;
        TL1=0xff;
//        TR1=1 ;
//        ET1=1;
        EX1=1;
        IT1=1;
        EA=1;        
}
void led1()
{
        led=0;
        delay(200);
        led=1;
}

void main()
{
        init();
        flag=126;         //目标值
        flag1=0;         //当前值
        while(1)
        {
                keyscan();
                display_lcd(0x09,flag,flag1);

        }
}
               
}

void counter1() interrupt 3
{
        TH1=0xff;
        TL1=0xff;
        flag1++;
        if(flag1==flag)
        {
                flag1=0;                led1();
        }
        
        
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
sanmaodeai
1楼-- · 2019-07-15 19:55
图片是proteus仿真,预设值126正常,但是实际值按按键没有反应,这个什么原因?

这个是proteus仿真

这个是proteus仿真
157442843
2楼-- · 2019-07-15 21:04
你这个外部中断好像用的不对!

一周热门 更多>