找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2286|回复: 7
收起左侧

52单片机数码管从左往右间隔一秒循环显示“-”,哪里不对,求大神

[复制链接]
ID:244223 发表于 2017-11-6 15:51 | 显示全部楼层 |阅读模式
#include "reg52.h"               
#include<intrins.h>                //因为要用到左右移函数,所以加入这个头文件
#define uchar unsigned char
typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

u8 duan[8]={0x40};
u8 wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}
u8 dispbitcnt;
u8 i;
void Timer()
{
        TMOD=0x01;//采用定时器0,16位
        TH0=0x3c;                //初始值 10ms
        TL0=0xb0;
        EA=1;                //总中断打开
        ET0=1;                //定时器中断打开
        TR0=1;                //定时器开关打开
}

void main()
{
        Timer();
        while (1);
        {
                if(i==100)                                       
                {
                        i=0;
                        P0=0x40;
                        P2=wei[dispbitcnt];
                        P2=P2>>1;
                        dispbitcnt++;
                        if(P2==0x7f)
                        dispbitcnt=0;
                }
        }
}
void Timer0(void) interrupt 1
{
        static u16 i;
        TH0=0xd8;       
        TL0=0xf0;               
        i++;
}

回复

使用道具 举报

ID:244308 发表于 2017-11-6 16:23 | 显示全部楼层
为啥会有一个全局变量i
回复

使用道具 举报

ID:244308 发表于 2017-11-6 16:24 | 显示全部楼层
为啥会有一个全局变量i和一个局部变量i呢,你主函数用的应该是全局变量那个吧
回复

使用道具 举报

ID:246597 发表于 2017-11-6 16:49 | 显示全部楼层
会不会是因为定时太短了?
回复

使用道具 举报

ID:244223 发表于 2017-11-6 16:55 来自手机 | 显示全部楼层
Felixin 发表于 2017-11-6 16:24
为啥会有一个全局变量i和一个局部变量i呢,你主函数用的应该是全局变量那个吧

用的全局的
回复

使用道具 举报

ID:232524 发表于 2017-11-6 17:26 来自手机 | 显示全部楼层
while(1);这里有分号,运行到这里就一直循环
回复

使用道具 举报

ID:111634 发表于 2017-11-6 21:05 | 显示全部楼层
先学理论,打基础,否则,问题多多,事倍功半。
回复

使用道具 举报

ID:185385 发表于 2017-11-6 21:13 | 显示全部楼层

先学理论,打基础,否则,问题多多,事倍功半。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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