普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1831|回复: 3

小白 ,程序在开发板A2上运行不了

[复制链接]

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-7-12 21:42:49 | 显示全部楼层 |阅读模式
这是一个计时器程序,在proteus上编辑源代码仿真成功,但是复制到keil上转成hex文件后,无法在开发板上运行
#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char seconds,minutes;
unsigned char flag=0;
unsigned char flag0=0;
unsigned char flag1=0;
unsigned char table[]=("clock:");
unsigned char time[]=("00:00");
unsigned char time1[4][10]={{"T1:00:00"},{"T2:00:00"},{"T3:00:00"},{"T4:00:00"}};
sbit EN = P3^4;
sbit RS = P3^5;
sbit RW = P3^6;
sbit K1 = P1^0;
sbit K2 = P1^1;
sbit K3 = P1^2;
sbit K4 = P1^3;
sbit beef = P1^4;

void delay1(uint x)
  {
  uint i,j;
  for(i=0;i<x;i++)
   for(j=0;j<120;j++);
  }

void write_cmd(uchar i)
{
  RS=0;
  RW=0;
  EN=0;
  P0=i;
  delay1(1);
  EN=1;
  delay1(1);
  EN=0;
  }
  
   void write_date(uchar dat)
{
  RS=1;
  RW=0;
  EN=0;
  P0=dat;
  delay1(1);
  EN=1;
  delay1(2);
  EN=0;
  }
  
  void write_time(uchar add,uchar date)
  {
  uchar ge,shi;
  shi=date/10;
  ge=date%10;
  write_cmd(0x80+0x40+add);
  write_date(0x30+shi);
  write_date(0x30+ge);
  }
  
    void display_byte(uchar y,uchar x,uchar z)
  {
   if(y)
   {
    x+=0x80;
   }
   else x+=0xC0;
   write_cmd(x);
   write_date(z);
  }
  
  void display_text(uchar y,uchar x,uchar table[])
  {
   uchar z=0;
   uchar t;
   t=strlen(table)+x;
   while(x<t)
   {
    display_byte(y,x,table[z]);
    x++;
    z++;
   }
  }
  
void init()
{
delay1(15);
write_cmd(0x38);
delay1(5);
write_cmd(0x38);
delay1(5);
write_cmd(0x38);
write_cmd(0x38);
write_cmd(0x08);
write_cmd(0x01);
write_cmd(0x06);
write_cmd(0x0c);
display_text(1,0,table);
display_text(0,4,time);
delay1(1);
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
}
  
  
void keyscan(void)
{
if(flag1==0)
{
if(K1==0)
  delay1(5);
  if(K1==0)
  if(flag1==0)
  {
   flag++;
   if(flag==5)flag=0;
   while(!K1);
  }
if(flag==1)
{
  write_cmd(0x80+0x40+8);
  write_cmd(0x0f);
  
  if(K2==0)
  delay1(5);
  if(K2==0)
  {
    while(!K2);
    seconds++;
    if(seconds==60)
   {
    beef=~beef;
    delay1(1);
    seconds=0;
    minutes++;
    if(minutes==60)minutes=0;
    write_time(4,minutes);
    }
    write_time(7,seconds);
  }
  }
  
  if(flag==2)
{
  write_cmd(0x80+0x40+7);
  write_cmd(0x0f);
  
  if(K2==0)
  delay1(5);
  if(K2==0)
  {
    while(!K2);
    seconds+=10;
    if(seconds>60)
   {
    beef=~beef;
    delay1(1);
    seconds-=60;
    minutes++;
    if(minutes==60)minutes=0;
    write_time(4,minutes);
    }
    write_time(7,seconds);
  }
  }
  
if(flag==3)
{
  write_cmd(0x80+0x40+5);
  write_cmd(0x0f);
  if(K2==0)
  delay1(5);
  if(K2==0)
  {
   while(!K2);
   minutes++;
   if(minutes==60)minutes=0;
   write_time(4,minutes);
  }
}

  if(flag==4)
{
  write_cmd(0x80+0x40+4);
  write_cmd(0x0f);
  if(K2==0)
  delay1(5);
  if(K2==0)
  {
   while(!K2);
   minutes+=10;
   if(minutes>60)minutes-=60;
   write_time(4,minutes);
  }
}

if(K3==0)
  delay1(5);
  if(K3==0)
  {
   uint i;
   while(!K3);
   if(!flag0)TR0=1;
   else TR0=0;
   flag0=~flag0;
   flag=0;
   delay1(5);
    time1[i][3]=minutes/10+'0';
    time1[i][4]=minutes%10+'0';
    time1[i][6]=seconds/10+'0';
    time1[i][7]=seconds%10+'0';
    i++;
    if(i==4)i=0;
   write_cmd(0x0c);
  }
}
  if(K4==0)
  delay1(5);
  if(K4==0)
  {
   while(!K4);
   if(flag1==0)
   {
   delay1(15);
   write_cmd(0x38);
   delay1(5);
   write_cmd(0x38);
   delay1(5);
   write_cmd(0x38);
   write_cmd(0x38);
   write_cmd(0x08);
   write_cmd(0x01);
   write_cmd(0x06);
   write_cmd(0x0c);
   display_text(1,0,time1[0]);
   display_text(1,8,time1[1]);
   display_text(0,0,time1[2]);
   display_text(0,8,time1[3]);
   }
   else init();
   flag1=~flag1;
  }
}

void time0() interrupt 1
{
int k;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
k++;  
if(k==20)
{
  k=0;
  if(seconds!=0)
  seconds--;
  else if(minutes==00)
  {
   TR0=0;
   flag0=0;
   beef=~beef;
   delay1(1);
   beef=~beef;
   delay1(1);
   beef=~beef;
   delay1(1);
  }
  else
  {
  seconds=59;
  minutes--;   
  }
  write_time(4,minutes);
  write_time(7,seconds);
}
}


void main()
{
   init();
   while(1)
   {
   keyscan();
   }
}
回复

使用道具 举报

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2022-7-12 21:43:30 | 显示全部楼层
前辈们帮帮忙,刚学,困扰一天了。急
回复 支持 反对

使用道具 举报

0

主题

4

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-7-15 19:31:32 | 显示全部楼层
刚学就玩一点简单的啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-29 13:53 , Processed in 0.087753 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表