搜索
bottom↓
回复: 3

求大神解决问题!!!关于点阵……

[复制链接]

出0入0汤圆

发表于 2013-3-11 21:27:55 | 显示全部楼层 |阅读模式
下面关于点阵的程序,不知道哪里出了问题,点阵显示混乱!这是一个关于循环显示数字的程序!
求大神帮忙找到问题!

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int

uchar code tableb[]=
{
0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,   
0x00,0x00,0x00,0x21,0x7f,0x01,0x00,0x00,   
0x00,0x4f,0x89,0x89,0x89,0x71,0x00,0x00,   
0x00,0x22,0x49,0x49,0x49,0x36,0x00,0x00,   
0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,0x00,     
0x00,0x72,0x51,0x51,0x51,0x4e,0x00,0x00,   
0x00,0x3e,0x49,0x49,0x49,0x26,0x00,0x00,   
0x00,0x40,0x40,0x40,0x4f,0x70,0x00,0x00,   
0x00,0x36,0x49,0x49,0x49,0x36,0x00,0x00,   
0x00,0x32,0x49,0x49,0x49,0x3e,0x00,0x00   
};

uchar i=0;
uchar dis_num=0;
uint t=0;

void main(void)
{
       
        P0=0xfe;
        TMOD=0x01;
        TH0=0xff;
        TL0=0x00;
        EA=1;
        ET0=1;
        TR0=1;
        while(1);
}

void Timer0(void)  interrupt 1
{
       
        TH0=0xff;
        TL0=0x00;
        P0=_crol_(P0,1);
        P2=tableb[dis_num*8+i];
        if(++i==10) i=0;
        if(++t==1500)
        {
                t=0;
                if(++dis_num==8) dis_num=0;
        }

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-3-12 09:18:13 | 显示全部楼层
本帖最后由 lcw_swust 于 2013-3-12 11:55 编辑

1,if(++i==10) i=0;改成if(++i==8) i=0;

2,P0=_crol_(P0,1);这一句有风险
这样试试:
新增全局变量uchar p=0xfe;
定时中断里P0=_crol_(p,1);
3,程序还可以这样改:
全局数组:code uchar seltab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
定时中断里P0=seltab[ i ] 当然,这个 i 有个范围:0~7

出0入0汤圆

 楼主| 发表于 2013-3-12 15:51:36 | 显示全部楼层
lcw_swust 发表于 2013-3-12 09:18
1,if(++i==10) i=0;改成if(++i==8) i=0;

2,P0=_crol_(P0,1);这一句有风险

谢了,能显示了,还想问一句,为什么这句  P0=_crol_(P0,1);   有风险

出0入0汤圆

发表于 2013-3-12 16:11:11 | 显示全部楼层
sunshine0708 发表于 2013-3-12 15:51
谢了,能显示了,还想问一句,为什么这句  P0=_crol_(P0,1);   有风险

原因:
这一句的执行过程大概是这样:读取P0,循环移位一次,移位后的值给P0
如果在读取P0时恰好P0有某个引脚被外部电路置0(比如受干扰时),从此以后P0的值就不是预计的值了。
以上只是我的猜测,而且这种意外情况出现的几率是相当小的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 08:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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