对单片机的控制,其实就是对I/0口的控制。
15系列单片机最多有P0~P7八个8位双向输入输出端口(P5除外)。比赛所用的IAP15F2K61S2仅用到P0-P4五组I/0口。
注:添加.c文件到工程中,否则编程不能通过。
对keil的几项设置:
生成HEX文件:(必要)HEX文件保存在objects文件夹中
对中文输入的设置:(必要)
字体及大小设置:(可不改)
ISP下载软件的使用
注:11.0592MHz晶振,中间的勾选项目为默认即可(否则可能会使板子锁定)下方的第一个√使得重新编译后再次下载的程序文件为修改后的,无需再次装载;第二个√使得每次重新编译后自动装载并烧录程序文件。
蓝桥杯官方用板需按开关重新断电上电,跳线帽在右侧两针上。
有关程序:
头文件中STC15F2K60S2.H中已包含了位定义:
sbit P00=P0^0;
可打开头文件查看。而52单片机头文件REG52.H中没有包含这一定义,故两者有区别,52单片机不可直接使用P00。
点亮第一盏LED灯:(先对LED进行初始化,然后编写所需点灯程序,使用0或1来实现亮暗,可放在while内部)
#include<STC15F2K60S2.H>
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化程序
P00=0;//点亮第一盏LED灯
while(1);//起到结束程序的作用
}
位定义的使用:(即将特定端口赋予一个变量名,之后可直接用此变量代表所指端口,可认为是指针,便于直接修改端口时候,直接修改了变量的指代内容,从而下方所用到的变量均为修改后的内容,减少了依次修改的工作量)
#include<STC15F2K60S2.H>
sbit LED1=P0^0;
void main(void)
{
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF; //初始化程序
LED1=0;
while(1);
}
位定义只能使用类似于(只能用于某一个端口,而不能用于某一组端口)
sbit LED1=P0^0;
不能使用类似于
sbit LED=P0;