导航:首页 > 源码编译 > 单片机老是编译一个程序

单片机老是编译一个程序

发布时间:2022-04-27 05:06:38

1. 我在做单片机数字钟,但程序老是编译不成功,求高手解答

#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
uint sec;
uint min=0;
uint hour=0;
uint tcnt;
sbit k0=P3^2;
sbit k1=P3^3;
sbit k2=P3^4;
sbit k3=P3^5;
sbit k4=P3^6;
sbit k5=P3^0;
sbit k6=P3^1;

unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x40,0x00};

//void display(unsigned char a,unsigned char b,unsigned char c);
void display(void);
void delay(unsigned int z)
{
unsigned int x;
unsigned char y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
void display()
{
P1=0xfe;P2=0x00;
P2=table[sec%10];
delay(3);

P1=0xfd;P2=0x00;
P2=table[sec/10]; //秒数的个位
delay(3);

P1=0xfb;P2=0x00;
P2=table[10];
delay(3);

P1=0xf7;P2=0x00;
P2=table[min%10];
delay(3);

P1=0xef;P2=0x00;
P2=table[min/10];
delay(3);

P1=0xdf;P2=0x00;
P2=table[10];
delay(3);

P1=0xbf;P2=0x00;
P2=table[hour%10];
delay(3);

P1=0x7f;P2=0x00;
P2=table[hour/10];
delay(3);
}

main()
{
TCON=0x01;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
EX0=1;
PX0=1;

while(1)
{

display();

}
}
void service_int0() interrupt 0
{
if(k5==0)
{ sec++;
if(sec==60)
sec=0;
}
if(k6==0)
{sec--;
if(sec==0)
sec=59;
}
if(k3==0)
{ min++;
if(min==60)
min=0;
}
if(k4==0)
{ min--;
if(min==0)
min=59;
}
if(k1==0)
{ hour++;
if(hour==24)
hour=0;
}
if(k2==0)
{ hour--;
if(hour==0)
hour=23;
}

}
void t0(void)interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;

sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;

}

}
}
}
}

2. 单片机程序,程序没问题,编译不出来怎么回事

单片机的内存地址0003H是中断子程序入口,你从000H开始编辑程序,然后接了个SJMP跳转到START,但是你的START程序没有另起地址,假设SJMP是两个字节指令的话,那么你的START程序段的地址就是0003H,把中断子程序入口堵住了,所以你的程序就产生了警告。

3. 单片机c语言keil编译程序老是提示 KEYS.H(11): error C129: missing ';' before 'key'

你这个程序也是做成了头文件了吧,在主程序中用#include定义包含这个头文件的位置是在typedef unsigned char uint8; 前面了吧,这样typedef的定义就无效了,交换一下顺序。

4. 我编了一段51单片机程序,在keil中运行,然后一直处于编译状态,等了半天也没有编译好,请问是什么原因

那就是程序没有编好

5. 单片机编译C语言程序,出现问题了!

你应该是新手吧,没有位定义就用了啊!
应该是这样的:
sbit
LEDK
=P1^7;
timer0()
interrupt
1
using
1
{
LEDK=!LEDK;
TH0=-50000/256;
TL0=-50000%256;
}

6. 有关单片机的错误,不管我编译什么程序都是这样

基本是工程建错了。先建工程,选型号,我一般选ATMEL-》AT89S51,新建文件,保存为*.asm,在窗口最左侧的soure group点右键,选择ADD files to group,找到刚建的*.asm文件,点击add,再点close,写程序,build。

7. 51单片机程序编译完后为什么还是显示错误,工程什么的都已经建立好了。

工程什么的都已经建立好了,只一个起步,不代表什么的。

51单片机程序编译完后为什么还是显示错误,这不可能,只要有错误,编译就不会完成的。
你程序有错误,不等于编译一遍就对了,不找错误,就是编译一百遍也没有用。

8. 单片机程序WAVE6000编译的一段程序,一直提示重复定义,怎么改

#define Ra-La 11.9改成#define Ra_La 11.9 回为在C语言中只能用下线

int i;在你的程序中没用用该变量,不用定义,多定义了在编译时就会出现警告

9. 单片机程序不知道哪里错了,总是编译不出来,高手指教

ACALL DIS11
ACALL CLEARRAM
ACALL DISPLAYS
ACALL DISPLAYV

MOV GEWEI,#0AH ; 开机显示
MOV SHIWEI,#0AH
MOV BAIWEI,#0AH
MOV QIANWEI,#0AH
INC SJIAN1
你的第一类错误,很多变量在使用前都没有预先定义

ACALL DELAY2
第二类错误是,程序中用到的很多跳转标号和调用的子程序都没有定义

JB P3.2 JB是判断语句,后要有跳转的偏移地址
第三类错误就是,有些汇编指令的书写格式不对

10. 单片机程序编译有一个错误,请帮忙解决

你给出的程序问题很大,像楼上说的,ORG伪指令
ORG 0000H
JMP MAIN
ORG 0003H
JMP EX0_INTERRUPT
;ORG 000BH
;......
在程序的开始,就要写主程序的入口地址,以及中断程序的入口地址。
MAIN:程序结尾的END不能忘掉,
MOV R0 #0A0H
MOV R2 #08H
这是你程序错误的原因。像含有多个操作数的指令,中间都会有分号存在。
MOV R0,#0A0H
MOV R2,#08H
注意,分号是英文的,不是中文的。

还有一点啊,你不是写C语言的,不是每句话结束都要用分号的,在汇编中分号只是注释符号。。。

ORG 0000H
JMP MAIN
ORG 0013H
JMP EX1_INTERRUPT ;有中断来了,就跳
MAIN:
MOV R0,#0A0H
MOV R2,#008H
SETB IT1
SETB EA
SETB EX1
MOV DPTR,#7FF8H
MOVX @DPTR,A
HERE:SJMP HERE ;此处应是等待中断,中断完成还是跳回此处。

;下面是中断程序
EX0_INTERRUPT: ;我是从0013H地址跳过来的
MOVX A,@DPTR
MOV @R0,A
MOV P1,@R0
INC DPTR
INC R0
DJNZ R2,DONE
RETI ;中断子程序结束
DONE:MOVX @DPTR,A
RETI ;中断子程序结束
RET ;这个程序结束的END不能丢

恩,就这样了,祝楼主学习顺利。

楼上的iie2010:
SETB IT1
SETB EA
SETB EX1
这三句话只说明中断时外部中断1,下降沿触发。
呵呵。。

阅读全文

与单片机老是编译一个程序相关的资料

热点内容
phpemoji表情符号 浏览:778
IBM云平台shor算法 浏览:576
程序员当乙方 浏览:519
php商城设计与实现的 浏览:305
php自动打印 浏览:469
哪个app多年轻人 浏览:902
租的服务器如何重装 浏览:937
干眼症程序员 浏览:239
乐动达人安卓版有什么游戏 浏览:484
c523压缩比 浏览:543
命令语气的人什么心态 浏览:435
程序员喜欢留指甲吗 浏览:516
七牛云服务器收费标准 浏览:627
时光相册加密空间密码忘记 浏览:474
华为云为用户提供的服务云服务器 浏览:634
minecraftlinux服务器搭建 浏览:376
linux命令新建文件 浏览:709
长线pdf 浏览:607
程序员电脑支持手写 浏览:415
解压头戴式耳机推荐 浏览:344