完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
以下是源程序,具体疑问在switch语句中#include
int n; ***it key = P1^0 ; //按键1 void ex01_init(); void delay(int x); //x * 1ms void delay_1(int x); void main() { n = 0; P0M0 = 0Xff; P0M1 = 0X00; //P0为推挽模式 P0 = 0Xff; //初始状态 关 P1 = 0Xff; ex01_init(); while(1) { switch(n) { case 0 : P07 = 1; P00 = ~P00; break; //关闭P07灯,P00灯闪烁 case 1 : P00 = 1; P01 = ~P01; break; case 2 : P01 = 1; P02 = ~P02; break; case 3 : P02 = 1; P03 = ~P03; break; case 4 : P03 = 1; P04 = ~P04; break; case 5 : P04 = 1; P05 = ~P05; break; case 6 : P05 = 1; P06 = ~P06; break; case 7 : P06 = 1; P07 = ~P07; break; } if(n == 8) //溢出归零 n = 0; delay(250); } } void ex01_init() { IT0 = 1; //外部中断为下降沿触发 EX0 = 1; //允许外部中断0中断 EA = 1; //开总中断 } void delay(int x) { int i,j; for(i = x; i > 0; i--) //1000 { for(j = 1000; j > 0; j--); //循环1000次 1ms if(key == 0) { delay_1(5); //去抖延时 if(key == 0) n++; while(key==0); } } } void delay_1(int x) { int i, j; for(i = x; i > 0; i--) //1000 for(j = 1000; j > 0; j--); } void int0_isr() interrupt 0 //按键2触发外部中断1,led关闭 { while(1) { P0 = 0Xff; P1 = 0Xff; if(key == 0) { delay_1(5); //去抖延时 if(key == 0) { break; //按键1触发跳出外部中断 } while(key == 0); } } } |
|
相关推荐
1个回答
|
|
这个就涉及到一个左值,一个右值问题了,如果用define宏定义,那就是一个异或运算,只能在赋值运算的右边。至于你说的P00在头文件中应该有位定义过的,所以可以用
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
464 浏览 0 评论
643 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
942 浏览 0 评论
1028 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
724 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12043 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 06:57 , Processed in 0.416600 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号