51单片机容易忽略的东西

发布者:平稳心绪最新更新时间:2019-10-14 来源: eefocus关键字:51单片机  地址线  进制 手机看文章 扫描二维码
随时随地手机看文章

P0口将作为总线的低8位地址线和8位数据线使用


P2口将作为总线的高8位地址线使用


如果十六进制数以字母ABCDEF中的某一个开头,必须在前面加一个0.譬如,MOV P1, #0BFH


ORG 00H 表示的是伪指令,作用帮助汇编器汇编指令,并不是单片机指令的一部分,因此伪指令不占用存储器空间。这段代码的含义是从程序存储器的00H开始执行程序。


一段小程序,循环闪烁小灯


ORG 00H

START:

MOV P1, #00H

CALL DELAY

MOV P1, #0FFH

CALL DELAY

JMP START

DELAY: MOV R3, #50

D1: MOV R4, #20

D2: MOV R5, #248

DJNZ R5, $

DJNZ R4, D2

DJNZ R3, D1

RET ;返回主程序

END ;汇编程序结束


按键开关控制P1.0上的发光二极管闪烁5次


ORG 00H

START:

MOV R0, #05 ;R0作为计数器

LOOP:

MOV P1, #00H

CALL DELAY

MOV P1, #0FFH

CALL DELAY

DJNZ R0, LOOP ;R0减一,不等于0就跳到loop处

JB P2.0, $ ;如果P2.0为高电平则循环执行本行

JMP START

DELAY: MOV R3, #50

D1: MOV R4, #20

D2: MOV R5, #248

DJNZ R5, $ ;R5的值减1,不等于0则循环执行本行

DJNZ R4, D2

DJNZ R3, D1

RET ;返回主程序

END ;汇编程序结束

中断方式

ORG 00H

JMP START

ORG 03H

JMP EXT0

START: ;主程序

MOV IE, #10000001B ;外部中断0使能

MOV IP, #00000001B ;外部中断0中断优先

MOV TCON, #00000001B ;外部中断0为电平触发

SHINE:

MOV P1, #0FEH

JMP SHINE

EXT0:

MOV R2, #5

LOOP:

MOV P0, #0FEH

CALL DELAY

MOV P0, #0FFH

CALL DELAY

DJNZ R2, LOOP ;R2减一,不等于0就跳到loop处

RETI ;中断服务子程序结束标志

DELAY: MOV R3, #20 ;这一段200ms

D1: MOV R4, #20 ;这一段延时10ms

D2: MOV R5, #248

DJNZ R5, $

DJNZ R4, D2

DJNZ R3, D1

RET ;返回主程序

END ;汇编程序结束


PSEN(program store enable) - 片外程序存储使能,需要和存储器的输出端端OE相连。

ALE(address latch enable) - 地址锁存使能,当单片机与片外存储器相连时,P0既可以送出数据也可以送出地址,如何区分到底是地址还是数据呢?


ALE为0,表示送出的是数据,当ALE为1表示送出的是地址。(P0送出的低8位地址,配合P2口的高八位地址,片外存储器便可以寻到16位地址)


注意51单片机的P0口是需要加上拉的!

51作为输入,必须先自己置1!

P0输入,P1输出

MOV A, #0FFH

MOV P0, A

LOOP:

MOV A, P0

MOV P1, A

JMP LOOP


片内片外程序存储器统一编址,访问指令使用MOVC,通过PC来指定地址。


外部数据存储器与外部IO端口实行统一编址,并使用相同的选通控制信号,相同的访问指令MOVX,相同的寄存器间接寻址。类似程序存储器的PC访问数据存储器用DPTR。

数据指针DPTR和程序计数器PC


关键字:51单片机  地址线  进制 引用地址:51单片机容易忽略的东西

上一篇:51单片机汇编语言-延时程序的延时时间
下一篇:51单片机六个常见问题解析

推荐阅读最新更新时间:2024-11-16 20:19

能防止多次试探密码的51单片机密码锁
1 引言 很多行业的许多地方都需要密码锁,但普通密码锁的密码容易被多次试探而破译。本文给出了一种能防止多次试探密码的密码锁设计方法,从而有效地克服了上述缺点。 2 硬件电路 图1所示是笔者设计的一种密码锁电路。该密码锁主要是按照以下10条用户要求进行设计的: (1)共8位密码,每位的取值范围为1~8。 (2)用户可以自行设定和修改密码。 (3)按每个密码键时都有声、光提示。 (4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。 (5)开锁密码错3次要报警10分钟,报警期间输入密码无效,以防窃贼多次试探密码。 (6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。
[单片机]
能防止多次试探密码的<font color='red'>51单片机</font>密码锁
51单片机软件三重监视抗干扰技术
应用于工业过程控制和智能化仪器仪表的单片机,由于现场条件往往十分恶劣,不可避免地会受到各种各样的电磁干扰。当串入系统的干扰作用于单片机内部的CPU部件时,后果更加严重,将导致系统失控。最典型的失控故障是破坏程序计数器PC的状态,导致程序在地址空间内“乱飞”,或者陷入“死循环”。因此,尽可能早地发现程序失控,并采取相应的补救措施,是单片机应用系统抗干扰设计的重要内容。 使程序从“乱飞”状态纳入正轨的方法称为程序拦截技术,包括指令冗余技术、软件陷阱技术等。使程序摆脱“死循环”,通常多采用硬件电路实现的监视技术,又称“看门狗”技术(Watchdog)。常见的硬件“看门狗”电路有单稳态型“看门狗”电路、计数器型“看门狗”电路、微处理器监
[单片机]
51单片机学习笔记(六)_串口中断通信+定时器2串口中断
51单片机默认使用定时器1作为串口通信的波特率发生器、定时器1中断通信,串口与定时器1冲突,在遇到定时器不够用的时候可以用定时器2 #include reg52.h void DelayMs(unsigned int i); void SerialInit(); void SendByte(unsigned char sbyte); void SendString(unsigned char *pstr); void main(void) { SerialInit(); while(1); //注:必需要无限循环 } /* //单片机时钟周期:11.0592MHz 以时钟1作为波特率发生器 void SerialInit
[单片机]
基于AT89C51单片机和555定时器的电阻电容测量系统设计
本文介绍了一种基于555定时器和单片机的数显式电阻和电容测量系统设计方案。该系统利用555和待测电阻或电容组成多谐振荡器,通过单片机测量555输出信号的周期,根据周期与待测电阻或电容的数学关系计算出电阻或电容值,再将之在LCD1602上显示出来。最后仿真结果表明该测量系统具有结构简单,方便实用等优点,能够测量一定范围内的电阻和电容值。 1.引言 在电子仪器、仪表的制造及使用行业,有大量的印刷电路板需要调试、测量与维修,需要对电阻电容的数值进行测试。 本文介绍了一种基于AT89C51单片机和555定时器的数显式电阻和电容测量系统设计方案,然后制作出电路实物,实现系统的功能。系统利用555定时器和待测电阻(或电容)组
[单片机]
基于AT89C<font color='red'>51单片机</font>和555定时器的电阻电容测量系统设计
进制程挑战大 优质半导体材料带业者上天堂
半导体迈入新制程对超薄晶圆需求高涨,但超薄芯片也带来制造过程的大挑战。不过,半导体材料供货商,已开始针对这些挑战,提出解决之道。 随着半导体制程节点越来越先进,如刚推出的新一代iPhone处理器采用10奈米(nm)制程的同时,台积电(TSMC)、三星(Samsung)... 等已着手布局7奈米制程。半导体迈入新制程对于超薄晶圆需求高涨,但超薄芯片也带来制造过程的大挑战,不过,半导体材料供货商,已开始针对这些挑战,提出解决之道。 Brewer Science半导体制造副技术长James E. Lamb表示,半导体朝先进制程迈进的目的不外乎是体积变小、功耗降低、效能提高及产热更少... 等,但要实现这些目标需要采用可达到异质整合的先进
[半导体设计/制造]
学习51单片机必知的寄存器知识
说起单片机存储器,大家可能知道RAM和ROM,但具体需要怎么用,还需要深入了解下,那今天通程创品就来大家详细了解下51单片机存储器的相关知识,希望对大家有帮助。 程序存储器(又称数据Flash),顾名思义,是用来存储用户的程序,使单片机能够按照编写的代码顺序执行,完成指定的任务。所以程序存储器是只读存储器(只读存储器),我们已经听过很多次了。代码存储在里面,一般有常数、表格、pi值、数码管形状、SCM ID号、内部参考信号源、关机唤醒定时器频率、IRC参数等数据。 注意:单片机每次都是烧录程序,烧录就是为了把代码放到程序存储器中,而我们用的电脑则是把硬盘的数据和程序放到RAM,再用CPU去读取RAM里面的数据和程序 一
[单片机]
51单片机的LED的位定义
一、位定义原理 定义方法:sbit 位名=特殊功能寄存器^位置; sbit LED1 = P2^0; 符号 ^ 前面是特殊功能寄存器的名字,后面的数字定义的可寻址位在特殊功能寄存器中的位置,取值必须是0~7 p2是连接LED的IO口,p2^0到7分别对应LED1到8 二、代码实现 #include reg52.h //对八个LED分别进行位定义 sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit LED5 = P2^4; sbit LED6 = P2^5; sbit LED7 = P2^6; sbit LED8 = P2^
[单片机]
<font color='red'>51单片机</font>的LED的位定义
51单片机串口检测程序
#i nclude "reg51_STC.H" #define uchar unsigned char #define uint unsigned int //-------------------------------------------------------------------------- //函数名称: UART_Init() //函数功能: 串口初始化函数,在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s //其他说明: 串口接收中断允许,发送中断禁止 //-------------------------------------------------------------
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved