求 51 单片机,某IO口为低电平时,才能执行程序

求 51 单片机,某IO口为低电平时,才能执行程序,第1张

#include <reg52h> //包含单片机寄存器的头文件

#define uint unsigned int

#define uchar unsigned char

#define u16 unsigned int

#define u8 unsigned char

sfr WDTRST=0xa6;

sbit D1=P1^0;

sbit D2=P1^1;

sbit D3=P1^2;

sbit D4=P1^3;

sbit D5=P1^5;

sbit D6=P1^7;

sbit SW1=P3^4;

sbit SW2=P3^5;

sbit SW3=P3^6;

sbit SW4=P3^7;

sbit K1=P3^3;

//--------------------------------------------

void delay(int x) //函数功能:延时一段时间

{

int i;

while(x--)for(i=115;i>0;i--);

}

//--------------------------------------------

void main()

{

D1=D2=D3=D5=D6=1; //关闭

while(1)//K1为高不运行程序

{

if(K1==0)

{

delay(20);

if(K1==0)//为低运行

{

break;

}

}

}

TMOD=0x01;

TH0=-1000/256;

TL0=-1000%256;

EA=1;

ET0=1;

TR0=1;

while(1)

{

//------------------------------------------------------------------------

D1=D2=D3=1; //关闭

while(1)

{

while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键

delay(10); //延时

if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环

}

if (SW1==0)

{

D1=0;while(SW1==0); //D1亮、等待释放

}

else

{

D5=0;while((SW2==0)||(SW3==0)||(SW4==0)); //D5亮、等待释放

}

//------------------------------------------------------------------------

D1=D2=D3=1; //关闭

while(1)

{

while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键

delay(10);

if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环 //加上一个延时

}

if (SW2 == 0)

{

D2=0;while(SW2==0); //D2亮、等待释放

}

else

{

D5=0;while((SW1==0)||(SW3==0)||(SW4==0)); //D5亮、等待释放

}

//------------------------------------------------------------------------

D1=D2=D3=1; //关闭

while(1)

{

while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键

delay(10);

if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环 //加上一个延时

}

if (SW3==0)

{

D3=0;while(SW4==0);D6=0; //D3亮、等待释放、D6亮

}

else

{D5 =0;while((SW1==0)||(SW2==0)||(SW3==0));} //D5亮、等待释放

//------------------------------------------------------------------------

}

}

void time0()interrupt 1

{

if(!K1)

{

D4=0;

}

else

{

D4=1;

WDTRST=0x1e;//软件复位

WDTRST=0xe1;

while(1);

}

}

编程实现对 8 个 LED 的输出控制 将实验箱中的 8255 片选信号连接到 218H~21FH,将 8255 的 4 个寄存器地址(A、B、 C 端口及控制字寄存器端口)设置为 218H~21BH。将 8255 的端口 A 的 8 个引脚:PA0~PA7 与 8 个 LED 对应相连,然后打开实验箱电源,最后编程对 8 个 LED 进行显示控制。

程序清单:

CODE SEGMENT

ASSUME CS:CODE

START: MOV DX,21BH

MOV AL,80H

OUT DX,AL ;工作方式初始化

MOV DX,218H

MOV AL,0FEH ;设置输出数据,即显示模式

MOV CX,80 ;设置循环次数

LN: OUT DX,AL

ROL AL,1

CALL DELAY ;调用延迟程序

LOOP LN

MOV AH,4CH

INT 21H ;返回 dos

DELAY PROC ;延迟子程序

PUSH CX

MOV BX,2000

A0: MOV CX,3000

A1: LOOP A1

DEC BX

JNZ A0

POP CX

RET DELAY

ENDP

CODE ENDS

END START。吴鉴鹰单片机开发板。

从刚开始接触单片机,到现在已经有4年的时间了,在这期间学习和使用了51单片机、飞思卡尔单片机,LPC2138,PIC16F887等系列的单片机,每接触一款单片机,都会经历熟悉其基本开发,然后将其用于项目中的过程,对于如何学习一款单片机,自己做了如下的总结。

大家都知道,51单片机是最容易入门的,不仅因为其编程简单,更重要的是网上的资料非常丰富。所以一般学习单片机开发的都将51单片机作为入门开发的首选。我学习51单片机的时候是采用这样的一个步骤进行学习的:

第一步(熟悉的过程):买了一款51单片机开发板,然后就开始了我的学习之旅,刚开始的时候没有去看视频教程,而是对着一本实验教材进行学习,那本实验教材的名字记不清楚了,但是其内容就是围绕单片机的LED灯进行控制,将51单片机内部的各个功能部件全部都使用到了,这样就能使我在很短的时间内,通过控制LED灯的亮、灭熟悉了51单片机的内部的各种资源,这时对51单片机也就没有感到陌生了。所以,个人觉得,学习单片机,要从实验入手,先熟悉单片机再说,开发语言开始使用的是C语言。

第二步(进阶的过程):有了第一步的基础之后,接下来的便是进阶的过程,当时,我看的是郭天祥十天学会单片机的视频教程,因为这个教程从基础到复杂的编程慢慢深入,讲的比较的全面,而且也生动,所以那一阶段,也是我学习单片机进步最快的阶段,每次听课的时候,按照上面的实验,以及课堂上面调试程序时出现的一些问题,自己认真的在电脑上进行调试,并分析产生故障的原因,让我有了一定的开发基础。在看完了视频教程之后,后面又对基础的知识进行了下补习,主要是看单片机原理性的教材,因为有些细节性的东西还是要从教材上面获得。

以上就是关于求 51 单片机,某IO口为低电平时,才能执行程序全部的内容,包括:求 51 单片机,某IO口为低电平时,才能执行程序、绘制一单片机最小系统电路图,编写程序控制P1.7口输出低电平,并点亮发光二极管。求大神解答哇

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9516383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存