完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#define MAIN_Fosc 2400000UL
#include "STC15FXXXX.H" ***it led_1=P1^7; ***it led_2=P1^6; ***it led_3=P4^7; ***it led_4=P4^6; void init() { TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; } void timer (void) interrupt 1 { static count=0; unsigned int i=0; count++; if(count==20) { i++; count=0; } if(i==4) { i=0; } switch (i) { case 0:{led_1=0;led_2=1;led_3=1;led_4=1;}break; case 1:{led_1=1;led_2=0;led_3=1;led_4=1;}break; case 2:{led_1=1;led_2=1;led_3=0;led_4=1;}break; case 3:{led_1=1;led_2=1;led_3=1;led_4=0;}break; default:{led_1=0;led_2=0;led_3=0;led_4=0;}break; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; } void main() { init(); while(1); } |
|
相关推荐
4个回答
|
|
要看你出问题的状况,LED亮与灭是否能实现,定时器的定时间隔会不会太短,做测试用可以把间隔定位300毫秒以上,这样可以看到LED的明显变化,另外我不知道这句void timer (void) interrupt 1是定时器0还是1的中断程序,看初始化,你应该是启动定时器0的。
|
|
|
|
人中狼 发表于 2017-3-30 22:57 LED灯直接不亮 void timer (void) interrupt 1 这个是定时器0的中断程序 |
|
|
|
找到问题的所在了 使用的时候需要将IO口全设置为准双向口 虽然我不知道为什么这样就好了
|
|
|
|
本帖最后由 wulinwl 于 2017-3-31 09:18 编辑
你的关键问题出在于中断服务程序中 unsigned int i=0; 这条,需要改成static unsigned int i=0;或unsigned int i;。否则每次进入中断就要对i初始化为0,结果i只能在0~1之间变换,不能形成流水灯。这与端口设置没有什么关系 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
54 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
395 浏览 0 评论
439 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1265 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
529 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11749 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 04:29 , Processed in 3.330739 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号