搜索
bottom↓
回复: 2

【求指教】声音信号点小灯过程中的竞争冒险,怎么破?

[复制链接]

出0入0汤圆

发表于 2016-1-1 17:19:11 | 显示全部楼层 |阅读模式
编译,仿真均已通过。但是还有一个问题,在换列点亮下一个灯时,会产生竞争冒险。请大神指教!
程序附录如下:
#include<at89x51.h>
#include<math.h>
#define uint unsigned int
#define uchar unsigned char

sbit le1=P3^0;               //驱动74HC573
sbit le2=P3^1;

sbit st=P3^5;
sbit eoc=P3^6;
sbit oe=P3^7;

uchar ad_data,d,row,col;
uchar code R[]={0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};     //行和列的数组,共对应64个坐标
uchar code C[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};  

void data_Pr();       //确定要点亮的灯的行row、列col
void delay(k);         //延时1ms
void display_Re();    //点亮坐标为(row,col)的灯

void main()
{
       
        ad_data=0;          //采样值存储单元置零
        P2=0xff;
        while(1)
        {
                oe=1;
                ad_data=P0;
                oe=0;
                data_Pr();
                oe=1;
                st=0;        //启动ADC
                st=1;
                st=0;
                while(!eoc)         //等待转换完成
                display_Re();
               
        }
}
void Delay(int count)
{
        int i,j;
        for(i=0;i<count;i++)
                for(j=0;j<120;j++);
}
void data_Pr(void)            
{
        d=ad_data>>2;
        col=d/8;
        row=d%8;
       
}
void display_Re()           //LEDÏÔʾ×Ó³ÌÐò
{
        le1=0;           //这个程序会产生冒险竞争
        le2=0;
        P2=C[col];
        le2=1;
        le1=0;
        delay(1);
        P1=R[row];
        le1=1;
        le2=0;
        delay(1);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

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

出0入442汤圆

发表于 2016-1-2 10:53:56 | 显示全部楼层
先关掉列,再设置行,再打开列。

出0入0汤圆

 楼主| 发表于 2016-1-2 23:44:32 | 显示全部楼层
wye11083 发表于 2016-1-2 10:53
先关掉列,再设置行,再打开列。

我将void display_Re()程序修改为:

void display_Re()            //确定要点亮的LED灯
{
        le2=1;
        P2=0xff;
        le1=1;
        P1=R[row];
        le2=1;
        P2=C[col];
        delay(1);
}

虽然没有竞争冒险了,但是点亮小灯闪烁,还很快。

我是希望小灯在点亮期间,一直亮的。

能解释下吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-15 11:30

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

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