sinat_30115123 2016-12-07 07:34 采纳率: 0%
浏览 2010

能帮我分析一个单片机程序吗?谢谢 新人上路 所以没有悬赏 各位见谅

#include
#include
#define uchar unsigned char
#define uint unsigned int
uintCON8279=0xCfE9;//8279控制口地址
uintDATA8279=0xCfE8;//8279数据口地址
uchar LED[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};段码表0~9
uchar code
keyval[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x11,0x12,0x13,0x18,0x19,0x1a,0x01b};
uchar code
SEG[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
uchar i;
unit k,r=0;
int a;
void init_8279()
{
XBYTE[CON8279]=0x00;//设置9279工作方式
XBYTE(CON8279)=0xD1;//清除8279显示
while(XBYTE[CON8279]&0x80);//等待清除结束
XBYTE[DATE8279]=0x34;//设置8279分频系数
}
uchar ReadKey()
{
if(XBYTE[0xCFE9]&0x07){ //是否有按键按下
XBYTE[0xCEF9]=0x40;
i=XBYTE[0xCFE8];//读键值
}
return 0;
void Display(uchar y)
{
XBYTE[0xCFE9]=0x80;
XBYTE[0xCFE8]=SEG[y];
}
void delay() //延时
{
for(k=0;k {};
}
void delay(uint tem) //延时
{
uint ii,jj;
for(ii=0;ii {
for(jj=0;jj }
}
Int Display10() //十秒倒计时
{
a=0;
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[1];
XBYTE[DATE8279]=LED[0];
init_8279();
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[0];
for(i=9;i>=0;i--){
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[i];
if(XBYTE[oxCFE9]&0x07)
break;
delay1(900);
}delay1(900);if(i<=1)
a=1;
return a;
}
void Dispaly60() //六十秒倒计时
{
int i,j;
r=0;
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[1];
XBYTE[DATE8279]=LED[0];
init_8279();
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[6];
XBYTE[DATE8279]=LED[0];
delay1(1000);
XBYTE[CON8279]=0x90;
for(k=5;k>=0;k--){
XBYTE[CON8279]=0x90;
XBYTE[DATE8279]=LED[k];
XBYTE[DATE8279]=LED[i];
if(r==1)break;
delay1(900);
}
}
}
void jianpan(){
Display(0);
}
void main(){
EX0=1;
IT0=1;
EA=1;
loop:
init_8279();
while(1){
jianpan();
while(XBYTE[0xCFE9]&0x07)
{
jianpan():
ReadKey();
i=i-191;
while(i==9)
{
Display10();
if(a==1){jianpan();P1=0xfe;a=0;goto loop;}else
break;}
ReadKey();
i=i-191;
Display(i);
delay1(2000);
Diaplay60();
r=0;
goto loop;
}
}
}
int interruptEx0()interrupt 0
{
r=1;
}

将键盘的KA10至KA12分别连接到8279的KA0至KA2;键盘的RL10至RL17接8279上午RL0至RL7;键盘的SHIFT1、CTRL;单脉冲输出端P+接单片机仿真版上的INTO(注释:按一下左下角的蓝色按钮PULSE,则产生一次下降沿,激活中断。)

  • 写回答

1条回答 默认 最新

  • shen_wei 2016-12-07 08:14
    关注
     void main()
    {
        EX0=1; //寄存器配置
        IT0=1;
        EA=1;
    loop:
        init_8279(); //初始化8279
        while(1){
            jianpan();
            while(XBYTE[0xCFE9]&0x07)
            {
                jianpan():
            ReadKey();  //读取按键信息
            i=i-191;
            while(i==9)
            {
                Display10(); //10秒倒计时
                if(a==1){jianpan();P1=0xfe;a=0;goto loop;}else
                    break;}
            ReadKey();
            i=i-191;
            Display(i); 
            delay1(2000); 
            Diaplay60(); //60秒倒计时
            r=0;
            goto loop;
            }
        }
    }
    

    代码都是配置硬件的。。具体的看里面的配置值。。

    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试