⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc932.asm

📁 P89LPC932的ISP使用
💻 ASM
字号:
;			LPC932的ISP功能测试
;     LPC932是一款高性能、低功耗的小封装微型控制器,具有8K Flash程序空间,可以ISP或IAP,
; 其IAP服务子程序保存在0FF00H--0FFFFH地址中,不与用户程序冲突。
;     ISP入口程序在1E00H,所用空间为1E00H--1FFFH,此程序块可被用户擦除,所以使用时要特
; 别小心。ISP功能与P89C51RD2等MCU的ISP类似,主机可以通过发送'U'来确定波特率。
;     进入ISP的相关设置:
;     1. 芯片出厂时,上电复位后即可运行ISP程序,实现ISP功能。(外部复位,内部RC振荡器,W
;        DT关,不加密,向量字使能01)
;     2. 写入用户程序后,要进入ISP则要在用户程序中调用ISP_INI子程序,向量字配置字为1EH,
;        状态字为00H,且1E00H后的FLASH不要使用或擦除。然后,上位机通过串口控制进入ISP,
;        即上位机要发送连续9位0,使MCU检测到间隔信号,复位进入ISP服务程序;上位机可通过对
;        TXD(PC的输出)输出0信号0.5S,然后恢复为1电平,再自动检测ISP波特率。
;     3. 用户程序根据一个IO口自行进行ISP入口,若用户自行编写的ISP接口程序。
;


; 本程序用来测试LPC932的ISP功能,由串产生一个间隔信号,使其进行ISP状态,再通上串行助手发
; 送'U'来测试是否进入ISP。(可以直接将LPC932的RXD脚接低电平0.5S,使它检测到间隔信号)
; 向量字设置为1EH,状态字设置为00H,外部RC复位,外部11.0592MHz晶振。运行正常用户程序时,
; 板上的LED闪动(P1.6,低电平点亮)。(测试条件:内部RC时采用9600波特率,外部11.0592MHz晶振300)


; LPC932部份寄存器定义
P1M1	DATA	91H
P1M2	DATA	92H
AUXR1	DATA	0A2H		; 辅助功能寄存器
SSTAT   DATA	0BAH		; 串口状态寄存器
BRGR1	DATA	0BFH		; 串行口波特率发生器高字节
BRGR0	DATA	0BEH		; 串行口波特率发生器低字节
BRGCON	DATA	0BDH		; 波特率发生器控制寄存器


LEDCON	BIT	P1.6


		ORG	0000H
		AJMP	MAIN

		ORG	0100H
MAIN:		MOV	R7,#0
		DJNZ	R7,$

                ; 由于上电复位时所用IO口设置为高阻态,所以要进行IO设置
		MOV	P1M1,#00H
		MOV	P1M2,#00H
		CLR	LEDCON

		LCALL	ISP_INI
		
		; 用户程序,控制LED闪动
MAIN_L1:	MOV	R7,#20
MAIN_L2:	MOV	R6,#0
MAIN_L3:	MOV	R5,#0
		DJNZ	R5,$
		DJNZ	R6,MAIN_L3
		DJNZ	R7,MAIN_L2
		CPL	LEDCON		; 取反LED控制,使LED点亮/灭掉

		AJMP	MAIN_L1


; 名称:ISP_INI
; 功能:初始化ISP设置,即设置UART工作模式和波特率发生器,并允许串口间隔检测,
;       使用上位机通过向串口发送间隔信号使MCU进入ISP功能,当然ISP的向量字要
;       设置及服务程序未被擦除。
; 入口参数:无
; 注:本程序是对UART进行设置,并使用串口的波特率发生器,但不打开串口中断。
ISP_INI:	
		ANL	SSTAT,#0FAH		;清除BR位,SSTAT.2
		MOV	BRGCON,#00H		;关波特率发生器

		ORL	AUXR1,#40H		;置位EBRR位,当检测到UART间隔信号时即进行复位
		MOV	SCON,#50H		;设置串口为工作方式1,允许串口接收
		MOV	BRGR1,#90H		;设置串口波特率:Fosc / ((BRGR1,BRGR0)+16)
		MOV	BRGR0,#00H
		MOV	BRGCON,#03H		;打开串口波特率发生器,使用串口波特率发生器
		RET
		
		END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -