huangfuxi2002 发表于 2016-6-2 22:30 可以了,。。。重新打开再试的时候就通过了,谢谢啊 |
好像特殊功能寄存器P0、P1、P3、等 是不能宏定义的。。。。 |
我试过了可以得啊。 #include <reg52.h> #include <intrins.h> #define FOSC 11059200L //晶振设置,默认使用11.0592M Hz //#define FOSC 12000000L //晶振设置,使用12M Hz //#define FOSC 24000000L //晶振设置,使用24M Hz //IO接口定义 //全局变量定义 unsigned char a,b,k; sbit b0=P0^0; /******************************************************************************* * 函 数 名 :Delayms * 函数功能 :实现 ms级的延时 * 输 入 :ms * 输 出 :无 *******************************************************************************/ void delayms(unsigned int ms) { unsigned int i,j; for(i=0;i<ms;i++) #if FOSC == 11059200L for(j=0;j<114;j++); #elif FOSC == 12000000L for(j=0;j<123;j++); #elif FOSC == 24000000L for(j=0;j<249;j++); #else for(j=0;j<114;j++); #endif } /******************************************************************************* * 函 数 名 :main * 函数功能 :主函数,实现LED灯闪烁 * 输 入 :无 * 输 出 :无 *******************************************************************************/ void main() { while(1) { b0=0; delayms(1000); b0=1; delayms(1000); } } |
没有,还遇到新的问题。 #include<reg51.h> #define DPIO_DIG P0 unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main(void) { while(1) { // GPIO_DIG=~DIG_CODE[0]; P0=~DIG_CODE[0]; } } 我定义变量GPIO_DIG,但是用注释的那条出错。用P0=就不报错。 |
没有。我又遇到新问题了。。。。。。我定义P0口#define GPIO_DIG P0 #include<reg51.h> #define DPIO_DIG P0 unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void main(void) { while(1) { // GPIO_DIG=~DIG_CODE[0]; P0=~DIG_CODE[0]; } } 变量DPIO_DIG不能用,但是直接用P0口可以用。 不知道哪里错了。 |
问题解决了没有 |
s不用大写的。 |
huangfuxi2002 发表于 2016-5-26 14:47 s要大写吗?我去试试。 |
应该是这句Sbit d0=P0^0;有问题。大小写,0与字母0的区别等 |
姜万孟55 发表于 2016-5-24 15:38 不需要定义sbit LED=P0^0;吗? |
姜万孟55 发表于 2016-5-24 15:32 如果只是简单的LED点亮,直接另LED=0, 如果想让LED不断点亮熄灭,LED=0,延时,LED=1。 |
单片机上电时,4个io口默认都是高电平,建议检查确定LED负极接到p.1.0口 |