| 
				打卡等级:以坛为家III打卡总天数:604最近打卡:2025-10-31 07:07:05 金牌会员 
 
 
	积分1693 
 | 
 
 发表于 2025-8-20 16:16:12
|
显示全部楼层 
| 版主你好,对你的程序很感兴趣。把你的程序下载到单片机里运行正常。程序里的主频是固定位40M吗?我加了OLED12864(ST7567芯片)显示模块,结果40M频率无法显示,将主频改为24M后,屏幕能显示了(我的这块屏幕主频不能太高,高于24M就不显示了),但灯不闪烁了。请版主支招。谢谢! 
 while(1)
 {
 task_start(0);//协程0开始
 P34 = ~P34;//每次执行取反P00端口电平
 task_delay(100);//设定延时100ms
 task_wait(!P32);//P32电平作为判断条件,为1则等待,为0则继续向下执行
 //因为按键按下为0,所以正常是一直闪烁,按下P32则LED00停止闪烁
 task_end(1);//为1则循环执行
 
 task_start(1);//协程1开始
 P35 = 0;//P01端口置0,LED亮
 task_delay(200);//设定延时200ms
 P35 = 1;//P01端口置1,LED灭
 task_delay(500);//设定延时500ms
 task_end(1);//为1则循环执行
 
 task_start(2);//协程2开始
 task_delay(1000);//先长延时一段
 task_for(cnt1=0, cnt1++)//初始化和运行表达式(中间要用逗号链接!)
 {
 task_for(cnt2=0, cnt2++)//第二层for循环
 {
 P36 = ~P36;//取反P02端口
 task_delay(50);//小延时,快速闪烁
 }
 task_break(cnt2<3);//第二层for的判断条件,为1则返回for开头,为0则继续执行
 P36 = 0;//强制给P02端口置低
 task_delay(300);//设定延时300ms
 }
 task_break(cnt1<5);//第一层for的判断条件,为1则返回for开头,为0则继续执行
 task_end(1);//为1则循环运行
 
 task_start(3);//协程0开始
 OLED_BuffClear();                                  //清屏
 
 OLED_BuffShowString(0,0,"温度",0);
 OLED_BuffShowChar(10,2,'A',0);
 
 OLED_BuffShow();
 task_delay(2);
 task_end(1);
 }
 }
 | 
 |