#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口输出低电平,并点亮发光二极管。求大神解答哇
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)