标题: 单片机数据存储器扩展程序 [打印本页]

作者: 醒了    时间: 2020-6-23 12:19
标题: 单片机数据存储器扩展程序
数据存储器扩展,一部分空间存放0~9,一部分空间存放A~F,当按下按键K1时,取出0~9的数据在数码管上依次显示;当按下按键K2时,取出A~F的数据在数码管上依次显示;再keil 4上用了c语言做了程序,软件转换的汇编看不懂,有没有大神能写一个完整的汇编
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit wei=P2^0;
sbit KEY1=P1^1;
sbit KEY2=P1^2;

uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar table2[]={0x77,0x7c,0x39,0x5e,0x79,0x71};

uint flag,t1,t2,time;

void delayms(uint xms)                                                                                                                 //延时函数 1ms
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=110;j>0;j--);
}

void display(uint a)
{
        if(a==1)
        {
                        wei=1;
                        P0=table1[t1];               
        }
        if(a==2)
        {
                        wei=1;
                        P0=table2[t2];
        }
}

void main()
{
        TMOD=0x22;                                                                                                                                 // 定时器 0 ,1
        TH0=0x06;
        TL0=0x06;                                                                                                                                 // 定时器0赋初值 计时 0.25ms,1000 次为 0.25s,4000 次为一秒
        TH1=0x06;
        TL1=0x06;                                                                                                                                 // 定时器1赋初值 计时 0.25ms,1000 次为 0.25s,4000 次为一秒
        ET0=1;                                                                                                                                        //开定时器0中断
        ET1=1;                                                                                                                                        //开定时器1中断
        EA=1;
        flag=2;
        time=0;
        t1=0;
        t2=0;
        TR0=1;
        TR1=1;
        while(1)
        {
                switch(flag)
                {
                        case 1:display(1);break;
                        case 2:display(2);break;
                }
                if(KEY1==0)
                {
                        delayms(3);
                        if(KEY1==0)
                        {
                                flag=1;
                        }
                }
                        if(KEY2==0)
                {
                        delayms(4);
                        if(KEY2==0)
                        {
                                flag=2;      
                        }
                }      
        }      
}
void time0(void) interrupt 1                                                                                                   //定时器0中断,定时器0用于抢答倒计时
{
         time++;
         if(time==4000)
         {
                 t1++;
                if(t1==10)
                {
                        t1=0;
                }
                time=0;      
         }
}
                                                                                                                                                        //定时器1中断,定时器1用于作答倒计时
void time1() interrupt 3
{
          time++;
        TH1=0x06;
        TL1=0x06;
        if(time==4000)
         {
                 time=0;
                 t2++;
                if(t2==6)
                {
                        t2=0;
                }
         }
}


作者: admin    时间: 2020-6-23 20:25
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1