Ⅰ keil与wave编译器的区别
命名。Keil是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,WAVE编译器用的也是KEIL系统,所以这两者除了命名的名字不同,其他方面并没有什么不同。
Ⅱ 单片机数字温度计编程问题,程序用WAVE编译后没有错误,但是存入芯片后数码管不显示,不知道为什么。
建议在现实部分看下
是否有触发条件的死循环,或者
你就烧个数码管显示的程序
看下是否是数码管的硬件问题,先找到是硬件问题还是软件问题,逐一排除,调试过程就是这样的。
Ⅲ 怎么在WAVE里面加入单片机头文件
解决方法有两个:
1,你直接把头文件加到WAVE的安装文件夹里的include里面
2,你也可以将需要用到的头文件放到你的工程里面,然后将那个#include<c8051f040.h>改为#include"c8051f040.h",讲<>改为"",则编译的时候会默认为这个头文件是你自己建立的,它会自动在你的工程文件夹里面寻找。
Ⅳ 单片机编程 交通灯的控制(求wave软件的程序源程序*.asm)
五、设计说明
1. 因为本设计是交通灯控制设计,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯,然后转状态l南北绿灯通车,东西红灯;过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时3秒,东西仍然红灯;再转状态3,东西绿灯通车,南北红灯;过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时3秒,南北仍然红灯;然后在循环至状态1,依次类推。
2. 中断服务程序的关键是:(1)保护进入中断时的状态,并在退出中断之前恢复进入时的状态。(2)必须在中断程序中设定是否允许中断重入。
ORG 0000H
AJMP MAIN
ORG 0003H
LJMP INT
ORG 0040H
MAIN:MOV SP,#60H
SETB EA
SETB EX0
SETB PX0
SETB IT0
MOV P1,#09H
ACALL DELAY1S
ABC:MOV R0,#3
MOV R1,#3
MOV P1,#0CH
ACALL DELAY1S
DEF:
CLR P1.2
ACALL DELAY2S
SETB P1.2
ACALL DELAY2S
DJNZ R0,DEF
MOV P1,#0AH
ACALL DELAY1S
MOV P1,#11H
ACALL DELAY1S
MOV P1,#21H
ACALL DELAY1S
GHI:CLR P1.5
ACALL DELAY2S
SETB P1.5
ACALL DELAY2S
DJNZ R1,GHI
MOV P1,#11H
AJMP ABC
INT: CLR EA
PUSH PSW
PUSH ACC
PUSH 05H
PUSH 06H
PUSH 07H
PUSH P1
SETB EA
MOV P1,#09H
ACALL DELAY1S
CLR EA
POP P1
POP 07H
POP 06H
POP 05H
POP ACC
POP PSW
SETB EA
RETI
DELAY1S:MOV R7,#5
DEL:MOV R6,#255
DE:MOV R5,#255
DJNZ R5,$;FOSC=6MHZ
DJNZ R6,DE
DJNZ R7,DEL
RET
DELAY2S:MOV R4,#250
DELL:MOV R3,#250
DJNZ R3,$;FOSC=6MHZ
DJNZ R4,DELL
RET
END
Ⅳ 用WAVE编写:单片机与上位机通信!
WAVE 只是 编译工具啊!!
如果与上微机通讯 无非是让你做个串行通讯程序 而已 不用紧张
直接上网搜个 RS232 程序 交差就可以了
Ⅵ proteus单片机仿真能不能直接调用wave上设计的程序(asm格式或编译后的bin格式文件)来模拟执行
能
只要你在proteus上联好电路,然后把asm格式的文件载入进去,就可以了。
Ⅶ 单片机程序用WAVE编译,出现重复定义怎么办
看的我眼花
Ⅷ wave仿真,单片机的汇编程序格式怎样写以及怎样调试,请知友告知
文件——新建,文件——保存(存成xx.asm)如图,仿真器——仿真器设置——生成bin,仿真器——E6000——PODH8X5X——89C51RX(并勾选软件仿真设置晶振,如图)——好,在弹出的伟福仿真器对话框点击好。
接下来编写自己的程序,写完后点击左上角第三个图标(或按F9)编译文件,如有格式错误会有错误提示,无错误会生成可下载入单片机的目标文件。至于调试,什么各种图标运行、全速运行、单步运行、断点……自己摸索,稍微动动脑子就能理解。
Ⅸ 单片机写超声波代码问题
把这个
wave_send = 1;
delay(20);
wave_send = 0; //发送声波
while(wave_receive==0){
time_count++;
if(time_count>400)time_check=1;break;}
TR0=1;TR0=0;
while(wave_receive==1);
改为
wave_send= 0; //发出一个完整的方波
wave_send = 1;
delay(20);
wave_send = 0; //发送声波
while(wave_receive==0); //等待发出超声波 模块发出超声波时 wave_receive置高
TR0=1;
while(wave_receive==1); //等待接收超声波 模块接收到超声波时 wave_receive由1变为0
TR0=0;
times=TH0*256+TL0; //增加个变量 times 用来表示定时技术次数 计算时间
TH0=0;TL0=0;
time_count=1.085*times*0.17; // 1.085为晶振为11.0952的12T单片机的机器周期
// 0.17为0.17mm/μs 声速的一半 time_count是测量的距
// 离
if(time_count>400){time_check=1;}
Ⅹ 用仿真器可以通过,烧录好单片机之后就不可以了。一般都会有什么原因 单片机和仿真器(wave)有什么区别
1)如果脱离仿真器以后,单片机根本就不工作的话,可以考虑是一下是否复位电路有问题.通常仿真器带有复位电路.所以带仿真器的时候不会出现复位问题.
2)电源问题,仿真器可以为单片机供电,并且可以起到一定的电源滤波作用,脱离开仿真器这些条件就没了.
3)晶体协振(无源晶振)问题:检查两个对地的补偿电容是否焊接好,并且与数据手册的参考值相匹配.
4)如果脱离仿真器后,出现工作异常,还可以考虑是否是仿真器下工作的速度和脱离仿真器后的速度不一样.
5)如果只是程序工作异常,要检查变量声明后是否没有初始化,某些仿真器会对程序变量进行初始化,这样脱离开仿真器后,需要进行初始化的变量未进行初始化可能会导致程序运行异常.
暂时就想到这些,希望能够对你有所帮助!