完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我在看书上介绍释放CPU的方法,就照着做了,可是编译错误,提示 LED_ON() ;和LED_OFF() ;为undefined identifier,提示g_bSystemTime1Ms = 0 ;为undefined identifier,是什么意思?
#define LED_ON() LED = 0x00 ; //所有LED 亮 #define LED_OFF() LED = 0xff ; //所有LED 熄灭 unsigned int g_u16LedTimeCount = 0 ; //LED 计数器 unsigned char g_u8LedState = 0 ; //LED 状态标志, 0 表示亮,1 表示熄灭 void LedProcess(void) { if(0 == g_u8LedState) //如果LED 的状态为亮,则点亮LED { LED_ON() ; } else //否则熄灭LED { LED_OFF() ; } } void LedStateChange(void) { if(g_bSystemTime1Ms) //系统1MS 时标到 { g_bSystemTime1Ms = 0 ; g_u16LedTimeCount++ ; //LED 计数器加一 if(g_u16LedTimeCount >= 500) //计数达到500,即500MS 到了,改变LED 的状态。 { g_u16LedTimeCount = 0 ; g_u8LedState = ! g_u8LedState ; } } } void main(void) //主程序 { while(1) { LedProcess() ; LedStateChange() ; } } |
|
相关推荐
10个回答
|
|
你还有没有其他文件的?在你所给的程序里LED和g_bSystemTime1Ms这两个变量都没定义;
|
|
|
|
有完整代码的。
|
|
|
|
#define LED P0
void Timer0Init(void) { TMOD &= 0xf0 ; TMOD |= 0x01 ; //定时器0工作方式1 TH0 = 0xfc ; //定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; } void Time0Isr(void) interrupt 1 { TH0 = 0xfc ; //定时器重新赋初值 TL0 = 0x66 ; g_bSystemTime1Ms = 1 ; //1MS时标标志位置位 } 少了上面这些 |
|
|
|
|
|
|
|
LED的类型定义呢?
|
|
|
|
开头还是少了#include
我调整了一下,这个在我的编译器了可以编译 #include #define LED P0 #define LED_ON() LED = 0x00 ; //所有LED 亮 #define LED_OFF() LED = 0xff ; //所有LED 熄灭 unsigned int g_u16LedTimeCount = 0 ; //LED 计数器 unsigned char g_u8LedState = 0 ; //LED 状态标志, 0 表示亮,1 表示熄灭 bit g_bSystemTime1Ms; void Timer0Init(void) { TMOD &= 0xf0 ; TMOD |= 0x01 ; //定时器0工作方式1 TH0 = 0xfc ; //定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; } void Time0Isr(void) interrupt 1 { TH0 = 0xfc ; //定时器重新赋初值 TL0 = 0x66 ; g_bSystemTime1Ms = 1 ; //1MS时标标志位置位 } void LedProcess(void) { if(0 == g_u8LedState) //如果LED 的状态为亮,则点亮LED { LED_ON() ; } else //否则熄灭LED { LED_OFF() ; } } void LedStateChange(void) { if(g_bSystemTime1Ms) //系统1MS 时标到 { g_bSystemTime1Ms = 0 ; g_u16LedTimeCount++ ; //LED 计数器加一 if(g_u16LedTimeCount >= 500) //计数达到500,即500MS 到了,改变LED 的状态。 { g_u16LedTimeCount = 0 ; g_u8LedState = ! g_u8LedState ; } } } void main(void) //主程序 { Timer0Init(); while(1) { LedProcess() ; LedStateChange() ; } } |
|
|
|
是的,我忘记这一段了。 void Timer0Init(void) { TMOD &= 0xf0 ; TMOD |= 0x01 ; //定时器0 工作方式1 TH0 = 0xfc ; //定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; } |
|
|
|
本帖最后由 sxlfr 于 2012-11-7 12:10 编辑
原来的程序是在别人试验板上用的,想学释放CPU的方法在面包板上做,我自己把程序改了,把数码管段选的定义取掉了,结果把不该取也取了,(贴到一楼的是其中一段),难怪有错误。谢谢各位指教,我再试一试。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 16:29 , Processed in 0.919040 second(s), Total 87, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号