×
单片机 > 单片机程序设计 > 详情

51单片机之忽略的东西

发布时间:2020-09-02 发布时间:
|

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单片机 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析