应广Mini-C语言开发PMS150G(中) 要想使用和控制单片机第一步就是能控制引脚输出高低电平,编辑器背景颜色默认是黑色的可以点击求助,色彩选择白色的. /*****************led每秒闪一次********************/ /*****************ID:共同学习stm8******************/ /*******************2023929************************/ /*********************v0.1*************************/ // pms150g // ______ ______ // 5v-|1-vdd \_/ gnd-8|-gnd // -|2-pa7 pa0-7|-led // -|3-pa6 pa4-6|- // -|4-pa5_____pa3-5|-anjian /**************************************************/ #include "extern.h" led bit pa.0; anjian bit pa.3; /**************************************************/ void FPPA0(void) { .ADJUST_IC SYSCLK=IHRC/4 //SYSCLK=IHRC/4 $ led out,Low; //输出,低 $ anjian in,ph; //输入,开上拉电阻 /**************************************************/ while (1) { if(led){led =0;} else{led =1;} //led反转 if(anjian ==0){while(anjian ==0){led =1;}} //按键按下灯一直亮 .delay 2000000; //延时半秒 } } /**************************************************/ 解释一下代码: Led bit pa.0; :引脚重命名,以后直接操作led=1, led=0. anjian bit pa.3; :定义按键在pa.3引脚. $ led out,Low; :输出,低.$配置引脚更直观,比配置pa,pac,paph,papl更直观. $ anjian in,ph; :输入,开上拉电阻,$配置语法自然是要查看软件本身的使用手册,点击软件上边最右边的使用手册,打开常见问题索引,KeyWord查询,$ IO.可以具体查看配置方法. if(led){led =0;} else{led =1;} :为什么这样写?~led这样写不行么?led本身就是pa的一个位,你只能操作一个寄存器.想要操作一个位pa |=0x01; pa.0=1;都做不到取反,pa ^=0x01;倒是可以但又难理解, led ^=1;这种写法语法错误,只有用if判断这种方法最容易理解. if(anjian ==0){while(anjian ==0){led =1;}} //按键按下程序会一直卡在这里灯一直亮 .delay 2000000; :想要延时多长时间太简单了系统时钟是4Mhz那.delay 4M次就是1秒钟,是不是很简单. 仿真,必须插上仿真器才能进入仿真模式.点击继续执行进入仿真模式,如果没有仿真器就会跳出一个界面提示没有仿真器:Can not detect5S-I-xxx ICE. file:///C:/Users/susu9/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 单核仿真器有两种这种简易版的方便实惠.插上仿真器会自动安装驱动.这时再点击继续执行就会进入调试模式.点击放大镜的反组译码就可以查看C对应的汇编程序,编译的非常规整就像手写的一样而且大部分都认识,这时单步执行这时仿真器就可以代替芯片在实际电路板上运行了,点击继续执行就可以全速运行,可以设置断点辅助调试,这时每秒闪一次效果就达到了.按键按着灯就会一直亮.
|