求助,51单片机keilC程序问题main(){while(1){P0^0=0;}}

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-17
求助,Keil单片机语言语言修改!

0xF7==0b1111 0111;
0xbd==0b1011 1101;
一位对一位 为0 灯就会亮。。
你也可以 ;
sbit P0_x=P0^x;
P0=0xFF;
P0_x=0;
来点亮 其中的灯。

#includesbit output=P0^0;void init(){ TMOD|=0x10;//设置定时器1工作方式1TH1=(65535-1000)/256;//定时器1设定初始值 1ms中断一次即频率500HzTL1=(65535-1000)%256;EA=1;//开总中断ET1=1;//开定时器1中断TR1=1;//启动定时器1}void t1() interrupt 3{TH1=(65535-1000)/256;TL1=(65535-1000)%256;output=!output;}void main(){init();while(1); }

是程序编译的结果不同。
P0^0我们认为他是IO口。
keil认为他是普通的寄存器的位元件。
执行时会当寄存器处理。而不是位。
而sbit 定义后。keil才会把他当成特殊位元件。

我记得reg52里面没有定义P0口,你可以去看下reg52这个头文件里面是否定义了,你把p0换成p1应该可以直接这样操作,可能是因为p0口没有加上拉电阻,为了避免直接用p0口做驱动引脚所以这样的,为了方便你也可以在你的那个头文件里面写上这个定义。

可以用P0^0表示IO,但不能给它赋值,可以将它的值赋给别的位变量。
如:
bit pbit;
pbit=P0^0;
还有在条件语句中也可以直接用如
if(P0^0).....
while(P0^0)......
等等

要在main之前定义IO口,sbit P0-0=P0^0;

你是不是开头没有写#include<reg51.h>啦

  • keil c 51编程遇到了麻烦,总是出现5.c(27): error C129: missing...
    答:第27行的main function改成://main function 另外,把所有esle改成:else 还有这三行:Delay function Parameter : unsigned int dt Delay time = dt(ms)改成://Delay function //Parameter : unsigned int dt //Delay time = dt(ms)谢谢miaohe2004的补充:所有viod都要改成void ...
  • 用keil编的51单片机C程序,不能实现其功能
    答:include<reg51.h> //sbit D=P0; //sbit 是位定义。P0不必定义。void main(){while(1) // while(1); 这里加了分号,程序就在while(1)这里循环了,不会到括号里 { P0=0xfc; //D=0xfc;} }
  • ...的正确的C程序复制到我的计算机上编译却通不过(注:是51单片机...
    答:原因有很多啊,你可把程序贴出来大家看看。有可能程序没考全,比如漏了一个源程序模块、或者自己写的头文件。也有可能程序中包含了一个库文件,但拷贝时没拷过来。也有可能编译的命令行不对。还有你应该先建立一个工程project, 然后再把你的源程序加入到工程中。你的源程序应该以*.c名字保存。如果没...
  • 51单片机使用KEIL C51 数据碰到编译异常
    答:AAA是个long型数据吧?问这样的问题之前,你应当先了解一下Keil Cx51的默认数据类型。Cx51在不修改项目配置时,计算时默认的数据类型是int型的(有符号整型),所以在没有类型指定的前提下,9600×4会计算得到溢出的结果变成-27136(0x9600),接下来执行赋值操作时promote类型为四字节,即0xFFFF9600。要...
  • 51单片机keil的使用问题
    答:这是你在建工程的时候,自动为你添加的一个文件。因为单片机启动并不是从main开始的,但是你写c代码一般是从main开始的,在main之前需要执行一小段汇编代码。这个文件就是那段代码。
  • 有谁能帮我修改一个51单片机的电子时钟C语言程序 我用keil编译后有三...
    答:既然你都把C02的原程序写在后面了,就不需要 include“24c02.h”了,不过程序前面要对C02的函数进行声明。
  • 单片机keil编程出现错误:不能执行'C:\keil\c51\bin\c51.exe' 如图_百...
    答:你的keil没有装到C:\keil文件夹,更改路径了,就会出现这种问题!
  • 51单片机keil编程问题
    答:你好好看看你的P0 = 0xf9;放在哪里了,C语音没学好啊,任何一个单独的语句不能放在大括号 的外面,你吧他换成其他的语句也是要报错的,因为这些语句只能写在void XXX{}的括号里面。这是规定。你也可以放在void main(){}或void delay(){}括号内的任意位置,因为括号内的东西是要执行的,而两个...
  • 51单片机编程 keil编译有错误
    答:if(spm<18)uchar i,l; //估计是这里的问题 while(1){ //正转2.84圈共182个脉冲 l=0;for(i=0;i<182;i++){ motor=0x00;motor=table1[l];l++;我记得 KEIL似乎不支持在使用变量时才定义吧,你的ucchar i ,l ;在函数开始的地方就定义,例如 void XXX(){ 先定义使用的变量,再...
  • keil c 仿真c51单片机出现的问题。。急急
    答:Keil公司提供的评估版对代码大小有限制,2k,除了使用正式版,也就是付费版,没其他办法,或者你使用破解版也是可以的