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
请检查一下 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 '=' 这是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
打开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'是啥意思,怎么弄
用VS2008编译的时候出来 fatal error C1083: 无法打开包括文件:“iomanip.h”,求解...