【发布时间】:2020-12-18 07:50:32
【问题描述】:
我正在开发基于 8051 的 MCU STC16C65A,我希望它通过 P2.0 发出 PWM,我从他们的手册中复制并修改此代码:
#include "8051.h"
sfr AUXR = 0x8e;
//Auxiliary register T0 interrupt service routine
void t0int() interrupt 1 //(location at 000BH)
{
}
void main()
{
AUXR = 0x80;
//timer0 work in 1T mode
TMOD = 0x06; //set timer0 as counter mode2 (8-bit auto-reload)
TL0 = TH0 = 0xff; //fill with 0xff to count one time
TR0 = 1; //timer0 start run
ET0 = 1; //enable T0 interrupt
EA = 1; //open global interrupt switch
IF P2.0 = 0 THEN P2.0 = 1 ELSE P2.0 = 0;
while (1);
}
但是当我使用 MCU 8051 ide 编译它时出现语法错误,sfr AUXR = 0x8e 中的声明被忽略;我认为使用的库(8051.reg)是一个通用库,而不是他们在手册中建议的 reg51.h(过时的),我不使用它,因为出现了关于库的错误消息过时 谁能救我?也许我必须为该指针选择另一个地址? 提前致谢
【问题讨论】:
-
请edit您的问题并发布确切错误消息和您使用的编译器版本。
-
我认为问题出在头文件中,我必须更改 AUXR 的地址,但在我删除所有 cmets 后,出现 PWMTimer0Mode2.c:2: error 1: Syntax error , 在 'sfr' PWMTimer0Mode2.c:2 处忽略声明:语法错误:token -> 'AUXR' ;第 8 列 PWMTimer0Mode2.c:9:错误 1:语法错误,在“TMOD”处忽略声明 PWMTimer0Mode2.c:10:错误 1:语法错误,在“TL0”处忽略声明 PWMTimer0Mode2.c:11:错误 1:语法错误,在“TR0”处忽略声明 PWMTimer0Mode2.c:12:错误 1:语法错误,在“ET0”处忽略声明 PWMTimer0Mode2.c:13:...
-
我使用 sdcc-4.0;根本就是不编译,问题是为什么会出现这个错误信息?
-
您仍然没有edit您的问题与错误消息。请这样做。但是,由于 SDCC 是与 Keil 不同的编译器,因此您必须预料到 C 标准的扩展会有所不同。 SFR 的声明是一种扩展。请阅读 SDCC 的文档!
标签: c embedded microcontroller keil 8051