如图所示,使用Keil uVision5完成,完全不知道该怎么办……
#include "STC15F2K60S2.H" //引用单片机头文件
//第一题:四个灯亮
//1,要引用正确的单片机头文件,在KEIL C51中选择对应的单片机
//2,仔细看C引用的头文件,里面定义了51单片的各个寄存器,可以直接操作
//3,汇编的几行操作,在C语言中可能只需要一行。可以在淘宝几块钱买个视频教程学习。
//4,二进制:11110000 = 十六进制:0xf0
void main(void)
{
P2 = 0xf0;
}
//第二题:
//延时程序一般有两种方法
//1,利用定时器中断计时 推荐使用
//2,空操作、累加、累减等让单片机死等 不推荐使用 你的汇编用的是这种方法
//3,调整a,b <后面的值,会改变延时的长短
void delay(void) //约300ms的延时 12MHZ的晶振,单片机初始化12倍运行
{
unsigned int a,b;
for(a = 0; a<300;a++)
for(b = 0;b<1000; b++);
}
void main(void)
{
P2 = 0xf0;
delay();
P2 = 0x0f;
delay();
}
//附个 #include "STC15F2K60S2.H" 中的一小段
sfr P2 = 0xA0; //1111,1111 端口2
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
代码你已经有了直接编译烧录就可以了,延时函数用来控制闪烁间隔的,A里存放的八位二进制是用来控制亮灭的吧,1111是亮,0000是灭
程序少了把P2初始化为输出口的语句,另外,延时时间和晶振频率有关,注意不要太快,否则就看不出来闪烁了,既然程序已经有了,keil编译、链接在烧写到芯片,复位或者重新开机就可以运行了,运行后看看你的两组灯是否正常闪烁。
c51的汇编代码,很简单的程序。创建文本文档,复制代码进去保存退出后,将文件后缀名从txt改为asm即可用(keil编译,然后加载运行)
三段代码中第一段是一个独立的main程序,直接点亮p2口上的高4位(bit7~bit4)的灯,循环输出高电平。第二段代码和第三段代码组合到一个asm文件中,前者是main函数,作用是高4位的灯和第4位的灯轮流闪烁,后者是延时函数,延时已固定。