keil用C51编程,在P1.2-P1.4三个引脚上分别接上三个发光二极管,使其依次亮,且循环不止。
作者&投稿:柯狭 (若有异议请与网页底部的电邮联系)
正是你需要的,但是有8位数码管,自行修改
看你定义的什么,一般是定义成对应单片机的端口,P0一般就对应单片机的P0口(P0.0到P0.7),P1(P1.0到P1.7)
#include<reg52.h> //52单片机头文件#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit led1=P1^2; //单片机管脚位声明
sbit led2=P1^3;
sbit led3=P1^4;
sbit button=P1^0;//设置控制按键接口,你可以根据你自己的按键设置,我这里设置按键按下时 P1.0口为低电平
void delay(uint z) //延时函数,z决定延时长短
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函数
{
uint a=100;
led1=1;//灭灯
led2=1;
led3=1;
while(1) //大循环
{
led1=0; //点亮小灯
delay(a); //延时
led1=1;//熄灭小灯
delay(a); //延时
led2=0; //点亮小灯
delay(a); //延时
led2=1;//熄灭小灯
delay(a); //延时
led3=0; //点亮小灯
delay(a); //延时
led3=1;//熄灭小灯
delay(a); //延时
if(button==0)//检测按键是否按下了
{
delay(5);
if(button==0)//防抖
{
a+=50;//按键按下,延时系数a自加50
button=1;//按键复位
}
}
}
}
在我的实验板上亲测有效
按键可以接到p1.0,用IF和switch case,每次按键前都要有延时,然后判断按键是否为低电平,让中间变量+100,然后把值返回到延时子函数。
按钮来控制定时时间,定时时间的变量是全局变量,然后外部中断里控制这个变量,循环搞定了吧
可尝试:按键INT中断,增加依次点亮的延时时长。
keil5多大
因为KEIL是可以装在一起的,我装了KEIL2,KEIL3,KEIL4,对应的核心包括了C51和C251,目前总共大小是162M_eil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、...
万芸重组: 把P1.2口的二进制数赋值给p2.0,如下: MOV C, P1.2 MOV P2.0, C把P1.5的二进制数赋值给p2.3,如下: MOV C, P1.5 MOV P2.3, C必须通过C,进行传送.
都匀市13514017553: keil c51 语言编程 - ?
万芸重组: #include <reg52.h>#define uint unsigned int#define uchar unsigned char void main (void) 你这占空比也太玄了吧.......................... 把400us分成十份,每份40us,然后用用定时器,这是个思路,你试试!
都匀市13514017553: 在C51编程中P1到底是什么,又控制灯亮,又控制蜂鸣器?
万芸重组: P1口的P1.0和P1.1是多功能复用口,P1.2-P1.7是准双向口,可做输入或输出口使用,用做输入口时需先置1锁存器,P1.0的第二功能是定时器T2的外部计数脉冲输入口,P1.1口的第二功能是定时器T2的EX(额外)输入端,T2捕捉方式时为触发输入线,加减计数方式时控制加减. P1,P2,P3都可以驱动4个LSTTL P0可以驱动8个LSTTL电路 由于其驱动能力较强,可以直接驱动LED,和小型蜂鸣器. 其中P1有八位(P1.0-P1.7),每位都可以直接驱动LED和蜂鸣器,可以同时控制灯和蜂鸣器,只要设置相应的数据位就可以.具体的高低电平,还要看实际的电路.
都匀市13514017553: 用keil软件如何将汇编与C语言结合起来一起编写单片机的程序 - ?
万芸重组: 在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法. 方法1)在Keil C51的函数中直接插入汇编语句 方法2)按照Keil C51接口规则,编写汇编模块方法1是利用编译控制命令#pragma asm(用来标识...
都匀市13514017553: keil c51 液晶显示编程求助 - ?
万芸重组: 程序功能上没有任何差别,也没有其它错误.提供3个可能的分析方向:1、采用循环的模式与逐个送显的模式唯一差别在每次调用的时间间隔上,循环模式由于每次需要做判断和步进+1操作,相对时间要长些,虽然几率不大,万一碰巧此时产生...
都匀市13514017553: 单片机用keil做C51的时候怎么烧写? - ?
万芸重组: 把芯片插到编程机,调用 chip.flash 刷片 keil的c51开发环境,我们经常会在网上见到这个软件.其实他同样可以用汇编以及PL/M等语言进行开发
都匀市13514017553: 用KEIL的编程环境编写C51的程序时,如果是汇编语言就能生成.HEX文件,而如果是.C语言就不行,这是为什么 - ?
万芸重组: 你在project下拉菜单里点击options for the target"..."然后弹出一个对话框点击output 最后在create hex file 那打钩就可以啦,祝你好运!
都匀市13514017553: 在汇编语言中怎么加入C语言?
万芸重组: 第一题 直接嵌入汇编代码的方法: 1、在 C 文件中要嵌入汇编代码片以如下方式加入汇编代码: #pragma ASM ; Assembler Code Here #pragma ENDASM 2、在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边...
都匀市13514017553: 用C51在keil编译的时候,printf串口输出的时候,为什么要"IT=1"才能在串口看到输出结果 - ?
万芸重组: 这是因为printf函数是调用putchar函数输入;而putchar应该是先判断TI是否为1,不为1则等待为1.如果为1则清0,然后送出一个字符.而单片机上电复位后TI是为零的,因此你如果直接使用printf函数,你的程序就会在putchar函数中等待TI为1.所以在使用printf前,必须手动将TI=1.请到keil/c51/lib下查看putchar函数的原文件,就明白这一点.
都匀市13514017553: 怎样用keil编写单片机的计数程序 - ?
万芸重组: 1.怎么看程序写了多少行:点击Edit-configuration...,选择Editor标签,在该标签的左下角,选中Show Line Number,这样在编辑界面就会有行数了.若果你想看汇编有多少行,只需要反汇编一下.2.怎么看程序占了多大的内存:程序编译成功后,...