8279仿真问题

2019-07-18 09:16发布

小弟最近想用8729芯片,做一个键盘控制数码管显示的小板子,从网上找了一段程序感觉写的挺好的,可是试了好久就是不对,求论坛的各位大神指导指导。
我上传了proteus图片和我用的程序希望大家指导一下。

#include<reg51.h>
#include<absacc.h>
#define COM XBYTE[0x7fff]        /*命令/状态口*/
#define DAT XBYTE[0x77ff]        /*数据口*/
#define uchar unsigned char   
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar idata diss[8]={0,1,2,3,4,5,6,7};
sbit cflag=ACC^7;
uchar keyin();
uchar deky();
void disp(uchar idata *d);
void main (void)
{
        uchar i;
        COM=0xd1;             /*总清除命令*/
        do{ACC=COM;}
        while(cflag==1);      /*等待清除结束*/
        COM=0x00;COM=0x2a;    /*键盘,显示方式,时钟分频*/
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        diss=keyin();    /*键盘输入到显示缓冲*/
                        disp(diss);         /*显示缓冲区内容*/
               
                }
        }
}
void disp(d)            /*显示函数*/
uchar idata *d;
{  
        uchar i;
           COM=0x90;            /*写显示RAM命令,地址自动加1*/
           for(i=0;i<8;i++)
           {  
                COM=i+0x80;
              DAT=table[*d];
             d++;
           }
}
uchar keyin(void)       /*取键值函数*/
{
   uchar i;
   while(deky()==0);     /*无键按下等待*/
   COM=0x40;            /*读FIFO RAM命令*/
   i=DAT;i=i&0x3f;      /*取键盘数据低6位*/
   return(i);           /*返回键值*/
}
uchar deky(void)        /*判断FIFO有键按下函数*/
{
        uchar k;
        k=COM;
        return(k&0x03);        /*非0,有键按下*/
}


QQ截图20140729090058.png
shiyan.c 下载积分: 积分 -1 分
1.27 KB, 下载次数: 17, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
武力戡乱
1楼-- · 2019-07-18 12:42
把仿真文件和编译文件都上传一下好吗,这样好帮助你。
现在go
2楼-- · 2019-07-18 13:46
武力戡乱 发表于 2014-7-29 10:26
把仿真文件和编译文件都上传一下好吗,这样好帮助你。

好的,我上传大家帮帮忙吧,纠结了好久了,真心不懂哪错了。

8279.zip 下载积分: 积分 -1 分

74.5 KB, 下载次数: 40, 下载积分: 积分 -1 分

武力戡乱
3楼-- · 2019-07-18 15:48
 精彩回答 2  元偷偷看……
现在go
4楼-- · 2019-07-18 17:23
武力戡乱 发表于 2014-7-29 14:57
仿真不了,我的是8.0的,一仿真就关闭了。等晚上吧,白天我还要上班。我回家帮你弄一下。 ...

跪谢大神,我都搞了好几天,感觉就差一点点。
武力戡乱
5楼-- · 2019-07-18 23:18
现在go 发表于 2014-7-29 17:21
跪谢大神,我都搞了好几天,感觉就差一点点。

额,别啊。我也是新手。有点忙。我初步看了一下。简单帮你挑几个问题。
第一 总线没有标号,这个你仿真肯定不通过啊。
第二中断是不连接反了,他是向外部请求取走数据。
第三YO1与YO2,应该是最为循环扫描用的,这样才可以最矩阵键盘。现在你连接在显示位置,你的意思是说,如果有按键,对应行就有对应第几位数码反应是吧?这地方我还没细合计。
总之你这个程序不是一句话就能成的。在补充一句,你是不看到什么论文或者一些人发表的文章了,在上面抄写的呢?很多学生或者老师做的东西都不能信的,他们也是糊里糊涂的抄袭的。
我这里做了一下改进,从新给你画了一张图,你可以参考一下。程序没做,朋友我真挺忙,我只是晚上看了一眼,这个连线很像Proteus里面PG160128(T6963内核)连线,应该说他们是通的。如果你真的特别的需要的话,在找我。没办法,星期六或者星期天帮做驱动好吧。
一会给你上传我画的图。
武力戡乱
6楼-- · 2019-07-19 04:42
 精彩回答 2  元偷偷看……

一周热门 更多>