打印

急救120…………真的很郁闷

[复制链接]
1375|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tyb520|  楼主 | 2010-11-1 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
真的很郁闷,我想用定时中断来写一段显示函数,不知道哪里出错了,请各位大虾指点下下………………
#include<reg52.h>
#define uchar unsigned char
void display();
uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,   
                  0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xbf};
uchar code bitwei[]={0xe3,0xe7,0xeb,0xef,0xf3,0xf7,0xfb,0xff};//**对应的数码管1-8**
void main()
{
   TMOD=0x01;
   TH0=(65536-3000)/256;
   TL0=(65536-3000)%256;
   TR0=1;
   ET0=1;
   EA=1;
   for(;;);
}
void time() interrupt 1
{
   TH0=(65536-3000)/256;
   TL0=(65536-3000)%256;
   display();
}
void display()
{              
    uchar k=0,temp;
k=k+1;
P2=bitwei[k]; //*******P2接位选*******
temp=P2;
switch(temp)
{
   case 0xe3: P1=dis[1];break;//****P1接数据口*******
   case 0xe7: P1=dis[2];break;
   case 0xeb: P1=dis[3];break;
   case 0xef: P1=dis[4];break;
   case 0xf3: P1=dis[5];break;
   case 0xf7: P1=dis[6];break;
   case 0xfb: P1=dis[7];break;
   case 0xff: P1=dis[8];break;
   default: break;
}
}

相关帖子

沙发
highgear| | 2010-11-1 22:12 | 只看该作者
不知道你的错误是什么, 是编译错误, 还是程序错误?

只能大概的改改:
看样子, uchar k=0 必须是全局或者是静态变量。

其次,这样可能更好些: 
temp=bitwei[k]; //*******P2接位选*******
P2=temp;

使用特权

评论回复
板凳
aihe| | 2010-11-2 00:49 | 只看该作者
ls是对的
退出函数K就清零了
K要每次进入都加一次的话,不应该放入这个函数中

使用特权

评论回复
地板
xwj| | 2010-11-2 07:22 | 只看该作者
2楼正解。而且你也没有考虑k的边界


再就是,如果P2口接有很重的负载的话,读出值可不一定等于赋入值,为什么要switch(temp)而不是switch(k)呢?

使用特权

评论回复
5
老鱼探戈| | 2010-11-2 12:46 | 只看该作者
2L说了,应该这样改:
1、改成局部静态变量:static uchar k=0;
2、改成全局变量,定义在函数外: uchar k=0;或则extern uchar k=0;

使用特权

评论回复
6
MIHAWK| | 2010-11-2 13:16 | 只看该作者
中断里面调用函数,似乎不大好吧:L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:脚踏实地的做人,脚踏实地的做事……

7

主题

276

帖子

1

粉丝