求单片机程序

作者&投稿:嬴径 (若有异议请与网页底部的电邮联系)
求单片机程序~

这个都需要的编写的,你这个分数太少啊

81C55内部RAM的地址范围为多少(设计无关位为1)?

P2.7=0

MAM_ADD: 7F00H~7FFFH。

/******************************************************
 
*程序:吴鉴鹰数字电子钟的设计                                                           
 
** 这一讲的主要内容: 数字电子钟的设计原理和程序                                                                                
 
** 功能描述:  
 
** 输 入:         
 
** 内容:     
 
** 输 出: 
**         
 
** 全局变量:
 
** 调用模块: 
**
 
** 作 者:    吴鉴鹰
 
** 日 期:     14.02.17
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
 
*******************************************************/
 
//变量定义和头文件的调用
 
//定义头文件和各个输入管脚以及变量声明
 
#include<reg52.h>
 
#include<absacc.h>
 
#define  uint unsigned int
 
#define  uchar  unsigned char

/*定义字型字位口*/
 
#define  DIGPORT  XBYTE  [0X8000]
 
#define  WORDPORT  XBYTE [0X4000]
/*定义P1口各管脚*/
 
sbit  K0 = P1^0;
 
sbit  K1 = P1^1;
 
sbit  K2 = P1^2;
 
sbit  BEEP = P1^3;
 
sbit  L0 = P1^4;
 
sbit  L1 = P1^5
 
sbit  L2 = P1^6;
 
sbit  L3 = P1^7;
uchar  data  BUFFER[2]  = {0,0};  //显示的缓存数组,依次为低位、高位
 
uchar  data  CLOCK[4] = {0,0,0,0};
 
uchar  data  SECOND[2] = {0,0};
/*定义运行状态*/
 
uchar  data  STATE = 0;
 
/*STATE = 0;秒表*/
 
/*STATE = 4,或者7,时钟运行*/
 
/* STATE = 6,时钟时调整 */
bit  bdata  SND = 0;    /*  秒表START(开始)  */
 
bit  bdata  RST = 0;     /*秒表RESET(复位)*/
/*数码管显示编码“0”-“9”,"A","-"*/
 
uchar  code  TABLE[] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X40};
/******************************************************
 
*程序:主程序                                                                                                                         
** 功能描述: 主干程序 
** 输 入:         
 
** 内容:     
 
** 输 出: 
**         
 
** 全局变量:
 
** 调用模块: 
**
 
** 作 者:    吴鉴鹰
 
** 日 期:     14.02.17
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
 
*******************************************************/
 
void  main()
 
{
 
      uchar   stabak;
 
          P1 = 0X0F;
 
      EA = 1;
 
      IT1 = 1;
 
      ET0 = 1;
 
      TMOD = 0X61;
 
      TH0 = -5000/256;
 
      TL0 = -5000%256;
 
      TH1 = 0XFF;
 
      TL1 = 0XFF;
 
      T2CON = 0;
 
      TH2 = -5000/256;
 
      TL2 = -5000%256;
       K0 = 1;
 
       K1 = 1;
 
       K2 = 1;
 
       STATE = P1&0X07;
 
       stabak = STATE;
      for(;;)
 
    {
 
           switch(STATE)
 
        {
 
                case 0:
 
                {
 
                    EX1 = 0;
 
                    ET1 = 1;
 
                    ET2 = 1;
 
                    TR1 = 1;
 
                    SND = 1;
 
                    L1 = 1;    
                    L0 = 0;
 
                    L2 = 0;
 
                    SECOND[0] = 0;
 
                    SECOND[1] = 0;
 
                }break;
                 case   5:
 
                {
 
                          IE1 = 0;
 
                          EX1 = 1;
 
                          ET1 = 0;
 
                          ET2 = 0;
 
                          TR0 = 0;
 
                          L0 = 1;
 
                          L1 = 0;
 
                          L2 = 0;
 
                }break;
                case  6:
 
               {
 
                    IE1 = 0;
 
                    EX1 = 1;
 
                    ET1 = 0;
 
                    ET2 = 1;
 
                    TR0 = 0;
 
               }break;
                  default:
 
               {
 
                   EX1 = 0;
 
                   ET1 = 0;
 
                   ET2 = 1;
 
                   L1 = 0;
 
                                   L2 = 0;
 
               }
        }
 
         while(STATE == stabak)
 
     {
 
         switch(STATE)
 
      {
 
         case 0:
 
      {
 
         BUFFER[0] = SECOND[0];
 
         BUFFER[1] = SECOND[1];
 
      }break;
 
      
 
      case 5:
 
      {
 
          BUFFER[0] = CLOCK[2];
 
          BUFFER[1] = 101;/*A-*/
 
      }break;
 
      
 
      case 6:
 
      {
 
          BUFFER[0] = 110;/*A-*/
 
          BUFFER[1] = CLOCK[3];
 
      }break;
 
      
 
      default:
 
      {
 
          BUFFER[0] = CLOCK[2];
 
          BUFFER[1] = CLOCK[3];
 
      }break;
 
      
 
      default:
 
      {
 
          BUFFER[0] = CLOCK[2];
 
          BUFFER[1] = CLOCK[3];
 
      }
 
      
 
      }
 
      
 
     //显示函数
 
     display();
 
     K0 = 1;
 
     K1 = 1;
 
     K2 = 1;
 
     STATE = P1&0X07;    
     }
 
     stabak = STATE;
 
    }
 
}
/******************************************************
 
*程序:子函数(1):timer0(void)                                                                                                                         
** 功能描述:  用定时器0实现24小时的时钟显示
 
** 输 入:         
 
** 内容:     
 
** 输 出: 
**         
 
** 全局变量:
 
** 调用模块: 
**
 
** 作 者:    吴鉴鹰
 
** 日 期:     14.02.17
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
 
*******************************************************/
 
void  timer0(void)   interrupt  1  using 1
 
{
 
    /*重置定时器初值*/
 
TH0 = -5000/256;
 
TL0 = -5000%256;

/*定时器处理*/
 
CLOCK[0] = CLOCK[0]+1;
 
if((CLOCK[0] == 50) && (STATE >= 4))
 
{
 
    L0 = !L0;
 
}
if(CLOCK[0] == 100)
 
{
 
    if(STATE >= 4)  L0 = !L0;
 
    CLOCK[0] = 0;
 
    CLOCK[1] = CLOCK[1] + 1;
 
    
    if(CLOCK[1] == 60)
 
    {
 
       CLOCK[1] = 0;
 
    CLOCK[2] = CLOCK[2] + 1;
 
    if(CLOCK[2] == 60)
 
    {
 
        CLOCK[2] == 0;
 
     CLOCK[3] == CLOCK[3] + 1;
 
     if(CLOCK[3] == 24)
 
     {
 
        CLOCK[3] = 0;
 
     }
 
    }
 
    }
 
}
 
}
/******************************************************
 
*程序:子函数(2):intsvr1(void)                                                                                                                        
 
** 功能描述:  对外中断1的按键脉冲进行判断和计数,并完成对应的时间调整功能。
 
** 输 入:         
 
** 内容:     
 
** 输 出: 
**         
 
** 全局变量:
 
** 调用模块: 
**
 
** 作 者:    吴鉴鹰
 
** 日 期:     14.02.17
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
 
*******************************************************/
 
void intsvr1(void) interrupt  2  using 2  
 
{
 
   if(STATE == 5)
 
   {
 
       CLOCK[2] == CLOCK[2] + 1;
 
    if(CLOCK[2] == 60)  CLOCK[2] == 0;
 
   }
 
   if(STATE == 6)
 
   {
 
       CLOCK[3] == CLOCK[3] + 1;
 
    if(CLOCK[3] == 24)  CLOCK[3] = 0;
 
   }
 
}
/******************************************************
 
*程序:子函数(3):display(void)                                                                                                                        
 
** 功能描述:  用动态显示的方法,将当前的时间或秒表内容通过数码管显示。
 
** 输 入:         
 
** 内容:     
 
** 输 出: 
**         
 
** 全局变量:
 
** 调用模块: 
**
 
** 作 者:    吴鉴鹰
 
** 日 期:     14.02.17
备注:有什么错误的地方,欢迎各大烧友指正
O(∩_∩)O~
 
*******************************************************/
 
void diplay(void)
 
{
 
   uchar i;
 
   uchar delay;
 
   uchar disp;
 
   uchar digit;
 
   digit = 0x08;
 
   for(i = 0;i < 2; i++)
 
   {
 
      if(BUFFET> 100)  
 
{
 
   disp = BUFFER%10 + 10;
 
}
 
   else  disp = BUFFER%10;
 
   
 
   DIGPORT = digit;
 
   WORDPORT = TABLE[disp];
 
   
 
   for(delay = 0;delay <= 200;delay ++);
 
   digit = digit >> 1;
 
   disp = BUFFER/10;
 
   
 
   DIGPORT = digit;
 
   WORDPORT = TABLE[disp];
 
   
 
   for(delay = 0;delay <= 200;delay ++);
 
   digit = digit >> 1;
 
   }
 
}


可以给你写的

这么提问不好回答啊,你是找人帮你写作业呢

求这段单片机程序理解! 求解答!
答:看起来是个自定义的键盘按键解码程序,大致解释如下:temp=temp&0xf0; //保留temp的高四位,低四位清零 if(temp!=0xf0) //temp的高四位不全为1,进入(此时有键按下,详细解释需结合电路图){ delayms(10); //延时 temp=P3; //读入P3口状态 temp=temp&0xf0; //保留temp的高四...

单片机一个很简单的题,大神求详细程序!!!
答:80C51 第一题:中断方式:ORG 0000H ;主程序起始地址 AJMP START ;跳至主程序START ORG 0003H ;INT0中断子程序起始地址 AJMP SA2 ;跳至INT0中断子程序SA2 ORG 0013H ;INT1中断子程序起始地址 AJMP SA1 ;跳至INT1中断子程序SA1 START:MOV IE,#10000101B;INT0 、...

求单片机程序
答:单片机程序的用途是让单片机“听话”,按人们所预定的设计完成一系列动作,最终实现一个特定的功能。例如使用单片机控制流水灯,接通电源后,第一次灯亮,然后延时一段时间,第二次灯亮,然后延时一段时间,第三次灯亮……,延时一段时间后又回到第一次灯亮,如此循环不已。这里就有这样的一些问题:第...

求一个单片机程序
答:...我觉得这种问题你可以自己解决的,以后自己尝试写一下的比较好,下面给你写好了,用定时器0 include"reg52.h"define uint unsigned int sbit p10 = P1^0;sbit p11 = P1^1;void main(){ TMOD=0x01; //设定定时器0为工作方式1 TH0=(65535-10000)/256;TL0=(65535-10000)%256; /...

求教一个51单片机程序。。(LCD电子时钟)
答:以单片机控制的时钟,在LCD显示器上显示当前的时间。设计的基本要求:1.使用文字型LCD显示器显示当前时间。2.显示格式为“时时:分分:妙秒”。3.用4个功能键操作来设置当前时间。功能键K1-K4功能如下:①K1:进入设置现在的时间。②K2:设置小时。③K3:设置分钟。④K4:确认完成设置。4. 程序执行后工作指示灯LED...

求单片机程序
答:include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit rw=P2^5; sbit rs=P2^6; sbit re=P2^7; uchar code zmo0[]="I LOVE YOU!"; uchar code zmo1[]="THAT IS REAL!"; uchar i; void delay(uint u) { uchar v; for(u;u>0;u--) for(v=150...

求51单片机译码程序汇编的。
答:为你解答:参考的汇编程序:A BIT P3.0 B BIT P3.1 C BIT P3.2 Y0 BIT P1.0 Y1 BIT P1.1 Y2 BIT P1.2 Y3 BIT

求一个简单的单片机时钟程序
答:include<reg51.h>#define uchar unsigned charuchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9unsigned char sec=0,min=0,hour=0,scanled;unsigned char key,time; unsigned char disdat[6];sbit K=P1^0;void dischg(){disdat[0]=sec%10;dis...

求一个51单片机C语言程序编程
答:实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,...

51单片机求这个时钟的c语言程序
答:以下是四位数码管可调时带秒闪烁的c51单片机电子钟程序(c语言)。/*** 本程序中,晶振为12MHz, ***/ /*** 时间控制采用定时中断控制方式。 ***/ /*** 模式和时间调整采用查询方式。 ***/ include<reg52.h> sbit P20=P2^0;//分个位控制端 sbit P21=P2^1;//分十位控制端 sbit P22=...