📄 xram.asm
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
//文件名: XRAM.asm
//
//编写人: LC
//
//编写时间:2005/03/10
//
//目标器件: C8051F02x
//
//编译工具: Silicon Laboratories IDE
//
//程序说明: 此程序对外部RAM操作,先在外部RAM特定地址写入数据,再读出进行比较是否
// 正确,若不正确蜂鸣器响一声
//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
$include (c8051f020.inc) ;SFR定义
//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------
BUZ EQU P3.5
ORG 0
AJMP main
ORG 30h
;延时子程序
Delay:
MOV R7, #01h
Delay1:
MOV R6, #80h
Delay0:
MOV R5, #00h
DJNZ R5, $
DJNZ R6, Delay0
DJNZ R7, Delay1
RET
;初始化I/O
PORT_Init:
MOV XBR2,#40h ;使能交叉开关和弱上拉
ORL P74OUT,#0ffh ;使能P4~P7推挽输出
ORL EMI0CF,#2ch ;EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期
ORL EMI0TC,#6ch ;地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期
ORL P3MDOUT,#0dfh ;使能P3.5推挽输出
RET
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
main:
;无效看门狗
MOV WDTCN,#0deh;
MOV WDTCN,#0adh;
LCALL PORT_Init; ;初始化端口
MOV P6,#00h
MOV P5,#00h
MOV A,#01h; ;待写数据变量
MOV DPTR,#0000h ;地址指针
MOV R4,#10h ;写十六个数据
WrData:
MOVX @DPTR,A ;写数据到RAM
INC DPTR
INC A;
DJNZ R4,WrData
MOV R1,#01h
MOV DPTR,#0000h
MOV R4,#10h
Com_Data: ;读出比较
MOVX A,@DPTR ;读数据
CJNE A,01h,Err ;是否出错*/
AJMP Next_Data
Err:
CLR BUZ ;蜂鸣器响
LCALL Delay
LCALL Delay
LCALL Delay
SETB BUZ ;蜂鸣器灭
NOP
Next_Data:
INC R1
INC DPTR
NOP
DJNZ R4,Com_Data ;数据是否读完
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -