F:\LED.C(9): error C141: syntax error near '=' 这是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了F:\LED.C(9): error C141: syntax error near '=' 这是啥意思相关的知识,希望对你有一定的参考价值。

#include<at89x51.h>
unsigned char code tab []=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;
unsigned int result; //秒表时间存储变量
unsigned char result0,result1,result2,result3; //秒表各位存储变量
unsigned char count;
void display() //秒表显示程序

P0=~tab[result0];
P2^3=0;
P2^3=1;
P0=~tab[result1];
P2^2=0;
P2^2=1;
P0=~tab[result2]&0x7f; //个位数值带小数显示
P2^1=0;
P2^1=1;
P0=~tab[result3];
P2^0=0;
P2^0=1;

void main()
IT0=1; //设定外部中断0采用下降沿触发
EX0=1; //开外部中断0允许
EA=1; //开总中断允许
TMOD=0X01; //设定定时器工作于定时模式,方式1
TLO=(65536-10000)%256; //赋定时10ms的初始值
THO=(65536-10000)/256;
ETO=1; //开定时器中断
while(1) display(); //循环显示秒表时间

void int0() interrupt 0
count++;
if(count==1)TRO=1;
if(count==2)TRO=0;
if(count==3)
TR0=0; //按键第三次按下,清零
count=0;
result=0;
result0=0;
result1=0;
result2=0;
result3=0;


void intl() interrupt 1
TLO=(65536-10000)%256; //恢复初始值
THO=(65536-10000)/256;
if(result!=9999)result++; //更新秒表时间
else result=0;
result0=result%10; //分离出秒表的百分位
result1=(result/10)%10; //分离出秒表的十分位
result2=(result/100)%10; //分离出秒表的个位
result3=result/10000; //分离出秒表的十位

这是我写的秒表程序,哪位帮我修改一下阿
Build target 'Target 1'
compiling led.c...
F:\LED.C(7): error C202: 'p0': undefined identifier
F:\LED.C(8): error C202: 'p2': undefined identifier
F:\LED.C(8): error C141: syntax error near '='
F:\LED.C(9): error C202: 'p2': undefined identifier

参考技术A 意思是:"="附近有语法错误。具体错误:"="是赋值符号,前者不能是表达值,而应该是变量,如:a = 2 * 3是正确的,2 * 3 = a,是错误的,题中大量出现"="前有异或运算符"^",所以才有报错 参考技术B

请检查一下 at89x51.h 这个文件是否存在。

并且里面是否包含 P0、P2的定义。

下面给出这个文件的内容:

/*--------------------------------------------------------------------------
AT89X51.H

Header file for the low voltage Flash Atmel AT89C51 and AT89LV51.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __AT89X51_H__
#define __AT89X51_H__

/*------------------------------------------------
Byte Registers
------------------------------------------------*/
sfr P0      = 0x80;
sfr SP      = 0x81;
sfr DPL     = 0x82;
sfr DPH     = 0x83;
sfr PCON    = 0x87;
sfr TCON    = 0x88;
sfr TMOD    = 0x89;
sfr TL0     = 0x8A;
sfr TL1     = 0x8B;
sfr TH0     = 0x8C;
sfr TH1     = 0x8D;
sfr P1      = 0x90;
sfr SCON    = 0x98;
sfr SBUF    = 0x99;
sfr P2      = 0xA0;
sfr IE      = 0xA8;
sfr P3      = 0xB0;
sfr IP      = 0xB8;
sfr PSW     = 0xD0;
sfr ACC     = 0xE0;
sfr B       = 0xF0;

/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

/*------------------------------------------------
PCON Bit Values
------------------------------------------------*/
#define IDL_    0x01

#define STOP_   0x02
#define PD_     0x02    /* Alternate definition */

#define GF0_    0x04
#define GF1_    0x08

#define SMOD_   0x80

/*------------------------------------------------
TCON Bit Registers
------------------------------------------------*/
sbit IT0  = 0x88;
sbit IE0  = 0x89;
sbit IT1  = 0x8A;
sbit IE1  = 0x8B;
sbit TR0  = 0x8C;
sbit TF0  = 0x8D;
sbit TR1  = 0x8E;
sbit TF1  = 0x8F;

/*------------------------------------------------
TMOD Bit Values
------------------------------------------------*/
#define T0_M0_   0x01
#define T0_M1_   0x02
#define T0_CT_   0x04
#define T0_GATE_ 0x08
#define T1_M0_   0x10
#define T1_M1_   0x20
#define T1_CT_   0x40
#define T1_GATE_ 0x80

#define T1_MASK_ 0xF0
#define T0_MASK_ 0x0F

/*------------------------------------------------
P1 Bit Registers
------------------------------------------------*/
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
sbit P1_3 = 0x93;
sbit P1_4 = 0x94;
sbit P1_5 = 0x95;
sbit P1_6 = 0x96;
sbit P1_7 = 0x97;

/*------------------------------------------------
SCON Bit Registers
------------------------------------------------*/
sbit RI   = 0x98;
sbit TI   = 0x99;
sbit RB8  = 0x9A;
sbit TB8  = 0x9B;
sbit REN  = 0x9C;
sbit SM2  = 0x9D;
sbit SM1  = 0x9E;
sbit SM0  = 0x9F;

/*------------------------------------------------
P2 Bit Registers
------------------------------------------------*/
sbit P2_0 = 0xA0;
sbit P2_1 = 0xA1;
sbit P2_2 = 0xA2;
sbit P2_3 = 0xA3;
sbit P2_4 = 0xA4;
sbit P2_5 = 0xA5;
sbit P2_6 = 0xA6;
sbit P2_7 = 0xA7;

/*------------------------------------------------
IE Bit Registers
------------------------------------------------*/
sbit EX0  = 0xA8;       /* 1=Enable External interrupt 0 */
sbit ET0  = 0xA9;       /* 1=Enable Timer 0 interrupt */
sbit EX1  = 0xAA;       /* 1=Enable External interrupt 1 */
sbit ET1  = 0xAB;       /* 1=Enable Timer 1 interrupt */
sbit ES   = 0xAC;       /* 1=Enable Serial port interrupt */
sbit ET2  = 0xAD;       /* 1=Enable Timer 2 interrupt */

sbit EA   = 0xAF;       /* 0=Disable all interrupts */

/*------------------------------------------------
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;

sbit RXD  = 0xB0;       /* Serial data input */
sbit TXD  = 0xB1;       /* Serial data output */
sbit INT0 = 0xB2;       /* External interrupt 0 */
sbit INT1 = 0xB3;       /* External interrupt 1 */
sbit T0   = 0xB4;       /* Timer 0 external input */
sbit T1   = 0xB5;       /* Timer 1 external input */
sbit WR   = 0xB6;       /* External data memory write strobe */
sbit RD   = 0xB7;       /* External data memory read strobe */

/*------------------------------------------------
IP Bit Registers
------------------------------------------------*/
sbit PX0  = 0xB8;
sbit PT0  = 0xB9;
sbit PX1  = 0xBA;
sbit PT1  = 0xBB;
sbit PS   = 0xBC;
sbit PT2  = 0xBD;

/*------------------------------------------------
PSW Bit Registers
------------------------------------------------*/
sbit P    = 0xD0;
sbit F1   = 0xD1;
sbit OV   = 0xD2;
sbit RS0  = 0xD3;
sbit RS1  = 0xD4;
sbit F0   = 0xD5;
sbit AC   = 0xD6;
sbit CY   = 0xD7;

/*------------------------------------------------
Interrupt Vectors:
Interrupt Address = (Number * 8) + 3
------------------------------------------------*/
#define IE0_VECTOR 0  /* 0x03 External Interrupt 0 */
#define TF0_VECTOR 1  /* 0x0B Timer 0 */
#define IE1_VECTOR 2  /* 0x13 External Interrupt 1 */
#define TF1_VECTOR 3  /* 0x1B Timer 1 */
#define SIO_VECTOR 4  /* 0x23 Serial port */

#endif




参考技术C 头文件不正确

~
~
~
~
参考技术D 你大概少#include什么头文件了,或者p0的P的大小写搞错了,检查一下吧

STM32之USART1串口:蓝牙接收字符控制LED亮灭

基础的就不讲了,直接上配置文件,led.c  led.h  usart.c  usart.h  stm32f10x_it.c   延时函数这些都自己写吧,网上搜索一大把,本次用到的蓝牙模块为 不知什么系列,具体见文末图,蓝牙的RXD连接单片机的TXD,蓝牙的TXD连接单片机的RXD,还有两个口,VCC和GND,接5V电源,还有配套自己写的安卓app,文末贴上百度网盘下载地址,实现的功能就是手机蓝牙app里面发送‘A’字符到单片机灯亮,发送‘B’字符灯灭;

led.c文件所包含的内容:

void LED_Config(void){ //LED灯的接口初始化
GPIO_InitTypeDef GPIO_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_8; //选择端口号(0~15或all)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)
GPIO_Init(GPIOA, &GPIO_InitStruct);

}

 

 

led.h文件所包含的内容:

#ifndef __LED_H
#define __LED_H
#include "stm32f10x.h"


void LED_Config(void);//初始化


#endif

 

 

 

usart.c文件所包含的内容:

static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

/* 嵌套向量中断控制器组选择 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;    /* 配置USART为中断源 */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;    /* 抢断优先级*/
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    /* 子优先级 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    /* 使能中断 */


/* 初始化配置NVIC */
NVIC_Init(&NVIC_InitStructure);
}

void USART_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

// 打开串口GPIO的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

// 打开串口外设的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

// 将USART Tx的GPIO配置为推挽复用模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// 将USART Rx的GPIO配置为浮空输入模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// 配置串口的工作参数
// 配置波特率
USART_InitStructure.USART_BaudRate = 9600;  //蓝牙模块出厂默认9600 波特率
// 配置 针数据字长
USART_InitStructure.USART_WordLength = USART_WordLength_8b;    //8位
// 配置停止位
USART_InitStructure.USART_StopBits = USART_StopBits_1;
// 配置校验位
USART_InitStructure.USART_Parity = USART_Parity_No ;
// 配置硬件流控制
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
// 配置工作模式,收发一起
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
// 完成串口的初始化配置
USART_Init(USART1, &USART_InitStructure);

// 串口中断优先级配置
NVIC_Configuration();

// 使能串口接收中断
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

// 使能串口
USART_Cmd(USART1, ENABLE);
}

 

 

usart.h文件所包含的内容:

#ifndef __USART_H
#define __USART_H
#include "stm32f10x.h"

void USART_Config(void);

#endif

 

 

stm32f10x_it.c中编写中断服务函数为:

注意:stm32f10x_it.c 中需要包含某些头文件,比如 usart.h 和你调用的函数:延时函数,也可直接写在stm32f10x_it.c 文件中,但是不推荐,可以自己建立一个delay.c和delay.h,然后直接包含头文件即可

void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Receive_Data = 0;
if(USART_GetITStatus(USART1, USART_IT_RXNE)) //由于只设置了一种接收中断,判断可以省略
{
Receive_Data = USART_ReceiveData(USART1);//保存接收到的数据,RXNE自动清零

/*下面的语句就是自己想实现的功能,比如简单的灯亮灯灭程序,下面程序就是单片机收到 A 字符就灯亮,收到 B 字符就灯灭*/

if(Receive_Data==‘A‘){
GPIO_SetBits(GPIOA, GPIO_Pin_8);
SysTick_Delay_ms(1000);
}

if(Receive_Data==‘B‘){
GPIO_ResetBits(GPIOA, GPIO_Pin_8);
SysTick_Delay_ms(1000);
}
//USART_ClearFlag(USART1,USART_IT_RXNE); //手动清零
}
}

 

 

 手机蓝牙软件下载地址:

链接:https://pan.baidu.com/s/1kmt-AHwPHnqiELMrNLqPiQ
提取码:9cj4

自己写的蓝牙软件,可能安装的时候会误报为有病毒,可以放心使用,当然不保证所有的蓝牙芯片都能用,但是我写的串口程序是可以用的,可以自己在淘宝上买蓝牙芯片且附带蓝牙APP的。

简述一下蓝牙的使用步骤:先不打开我写的蓝牙APP,手机设置里面先和蓝牙模块配对成功后,打开蓝牙APP,点击蓝牙设备选择,选择配对时候的地址,就行了,蓝牙模块的灯常亮就是连接成功了。当然,退出软件的时候最好还是点击 断开连接 后再退出软件。

蓝牙APP软件截图:

注:图中的1~8按钮就是发送对应的数字给单片机,写中断程序的时候,进行相应的判断即可!

技术分享图片

 

全家图:

 

技术分享图片

蓝牙模块实图:

技术分享图片

最后,作者也是第一次写博客,如有问题还请见谅并指出,以上纯属个人编程观点,如有疑问欢迎留言,谢谢!


















































































以上是关于F:\LED.C(9): error C141: syntax error near '=' 这是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言printf的使用,为何输出乱码

打开eclipse后显示Error: could not open `C:\Program Files\Java\jdk1.6.0-11\lib\i386

java 正则表达式(Invalid escape sequence (valid ones are \b \t \n \f \r \" &#

Error: could not open `E:\新建文件夹\lib\amd64\jvm.cfg'是啥意思,怎么弄

VirtualBox创建虚拟硬盘失败

用VS2008编译的时候出来 fatal error C1083: 无法打开包括文件:“iomanip.h”,求解...