鹤顶红IF
8051单片机共有7种寻址方式。寻址方式是指令中确定操作数的形式,用来确定操作数所处的存储空间。 1.立即寻址:在指令中直接给出操作数 MOV A, #80H 8位操作数 MOV A, #2000H 16位操作数 2.直接寻址:指令中直接给出操作数地址 (1)SFR,这一存储空间只能使用直接寻址 MOV PSW, #50H (2)内部数据RAM,这一存储空间可以使用直接寻址和寄存器间接寻址 MOV A, 30H 3.寄存器寻址:以通用寄存器的内容作为操作数(通用寄存器包括A, B, DPTR, R0~R7) INC DPTR 注意:A、B既是通用寄存器,也是SFR(直接寻址) 4.寄存器间接寻址:以寄存器中的内容作为操作数的地址 能够用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP 区分内部数据RAM寻址和外部数据RAM寻址:外部数据RAM寻址指令上采用MOVX 对内部数据RAM寻址:使用8位的R0或者R1即可 MOV @R0, A 对外部数据RAM寻址:使用P2端口提供高8位地址,使用R0或者R1提供低8位地址;或者使用16位的DPTR提供地址 MOVX A, @R1 MOVX @DPTR, A 5.变址寻址:以基址寄存器PC或者DPTR与变址寄存器A中的内容之和作为操作数的地址 变址寻址只能对程序存储器中的数据进行寻址,由于程序存储器是只读的,因此变址寻址只有读操作,指令上采用MOVC MOVC A, @A+DPTR MOVC A, @A+PC 6.相对寻址:用于修改PC的值,使得PC加上指令中给出的一字节的偏移量 由于转移指令有两字节和三字节这两种形式,因此偏移量的范围分别为-126~+129和-125~+130 SJMP 80H 7.位寻址:以位地址中的内容为操作数 SETB 20H MOV 32H, C 总结一下各种寻址方式的使用场合: 立即寻址:常数 直接寻址:SFR和内部数据RAM 寄存器寻址:寄存器区 寄存器间接寻址:内部数据RAM和外部数据RAM 变址寻址:程序存储器 相对寻址:PC 位寻址:位地址区
调皮捣蛋妈
电子密码锁摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安工作,有极高的安全系数。关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。1 引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。
dp73711528
程序设计内容
(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2). 密码的输入问题: 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
C语言源程序
#include unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9; unsigned char templen;
unsigned char digit; unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
void t0(void)
interrupt 1 using 0 { TH0=(65536-500)/256;
TL0=(65536-500)%6;
if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0) && (rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
单片机控制自动恒温箱的设计(电路图+原理图+程序)双坐标步进电机控制系统的设计(论文) 原材料仓物位智能检测系统的设计 单片机多用宽频转速计的设计智能家居安防红
单片机是经历长期开发与应用的嵌入式系统电子设备,与计算机相比,它具有许多显著的特点。这是我为大家整理的单片机科技论文,仅供参考! 单片机在现代科技中的应用与前景
单片机控制自动恒温箱的设计(电路图+原理图+程序) 双坐标步进电机控制系统的设计(论文) 原材料仓物位智能检测系统的设计 单片机多用宽频转速计的设计 智能家居安
目录摘 要 IAbstract II目录 III第一章 绪 论 - 1 -1.1课题的背景 - 1 -1.2课题意义 - 2 -1.3本章小结 - 3 -第二
篮球赛计时记分器 论文编号:JD805 论文字数:10012,页数:24 篮球赛计时记分器 摘要:本文介绍一种由AT89C51编程控制LED七段数码管作显示的球