小知识点补充72
1、当MCS-51引脚ALE有效时表示从P0口稳定地送出了低8位地址
2、MCS-51的堆栈是软件填写堆 栈指针临时在片内 数据存储器内开辟的
区域
3、MCS-51 系统中,当PSEN为低电平信号有效时,表示 CPU 要从外部程
序存储器读取信息
4、MCS-51 有 4 组工作寄存器,它 们的地址范围是 00H~1FH
5、MCS-51 片内 20H~2FH范围内的数据存储器,既可以字节寻址又可
以 位 寻址
6、PSW 中 RS1 RS0=10 时,R2 的地址 为 12H
7、单片机系统复位后,( PSW)=00H ,因此片内 RAM 寄存区的当前寄存器是第 0 组,8 个寄存器的单元地址 为 00H ~ 07H
8、上电复位后,PC 值为 0000H
9、1个机器周期 = 12 个振荡周期= 6 个时钟周期
LCD1602液晶显示屏介绍:见下链接
LCD1602介绍
使用LCD1602显示两行任意可视字符,电路连接图如下图。
程序源码:
RS BIT P2.0
RW BIT P2.1
E BIT P2.2
ORG 0000H
MOV P0,#01H
ACALL ENABLE
MOV P0,#38H
ACALL ENABLE
MOV P0,#0FH
ACALL ENABLE
MOV P0,#06H
ACALL ENABLE
MOV P0,#80H
ACALL ENABLE
MOV DPTR,#TAB1
CALL WRITE1
MOV P0,#0C0H
CALL ENABLE
MOV DPTR,#TAB2
CALL WRITE1
SJMP $
ENABLE:
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
WRITE1:
MOV R7,#00H
L1:
MOV A,R7
MOVC A,@A+DPTR
CALL WRITE2
INC R7
CJNE R7,#10H,L1
RET
WRITE2:
MOV P0,A
SETB RS
CLR RW
CLR E
CALL DELAY
SETB E
RET
DELAY:
MOV R5,#250
DEL1:
MOV R4,#250
DEL2:
DJNZ R4,$
DJNZ R5,DEL1
RET
;Welcome to myBlog
TAB1: DB 57H,65H,6CH,63H,6FH,6DH,65H,74H,6FH,6DH,79H,42H,6CH,6FH,67H,4CH
;Like follow,collect
TAB2: DB 69H,6BH,65H,46H,6FH,6CH,6CH,6FH,77H,43H,6FH,6CH,6CH,65H,63H,74H
END
Count the number of “30H” out of 10 numbers starting from 50H, and store the result in the external RAM address 1111H.
程序源码:
;统计从50H开始的10个数中“30H”的个数,并将结果存入外部RAM地址为1111H中
RESULT EQU 1111H
SADDR EQU 50H
ORG 0000H
MOV 50H,#30H
MOV 51H,#30H
MOV 52H,#32H
MOV 53H,#30H
MOV 54H,#30H
MOV 55H,#40H
MOV 56H,#45H
MOV 57H,#30H
MOV 58H,#30H
MOV 59H,#0FFH
;FOR TESTING
MOV B,#00H
MOV R0,#SADDR
MOV R1,#11H
MOV R7,#0AH
LOOP:
MOV A,@R0
CJNE A,#30H,L1
INC B
L1:
INC R0
DJNZ R7,LOOP
XCH A,B
MOV P2,#11H
MOVX @R1,A
SJMP $
END
设内部RAM40H和41H地址单元中存有任意数,编程对两个单元进行加减运算,(40H为被加数和被减数),然后分别用P0口显示加法和P2口减法运算结果(P0、P2口分别接有8盏灯),P1.0和P1.1分别表示进位结果(有进位或借位点亮对应LED)
备注:理论转化为实践
电路图:
程序源码:
ADDDAT EQU P0
SUBDAT EQU P2
FLAGADD BIT P1.0
FLAGSUB BIT P1.1
ORG 0000H
CLR C
SETB FLAGADD
SETB FLAGSUB
CLR A
MOV A,40H
ADDC A,41H
MOV ADDDAT,A
JC L3
L1:
MOV A,40H
SUBB A,41H
MOV SUBDAT,A
JC L2
AJMP HALT
L3:
CLR FLAGADD
CLR C
AJMP L1
L2:
CLR FLAGSUB
HALT:
SJMP $
END