51单片机汇编程序2

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§2.3.2软件结构及程序设计

一、主程序及其说明

ORG 0000H

AJMP MAIN ;主程序

ORG 0003H

AJMP X0S ;外部中断入口

ORG 000BH

LJMP T0S ;定时器T0中断入口

ORG 001BH

AJMP T1S ;定时器T1中断入口

ORG 0023H

LJMP SSV ;串行中断入口

ORG 0030H

MAIN: CLR EA

MOV SP, #50H

MOV A, 48H ;48H、49H单元为冷热启动标志单元

CJNE A, #0AAH, LRE ;如等于0AAH、55H,则说明为热启动

MOV A, 49H ;否则,为冷启动,则进行自检

CJNE A, #55H, LRE

SJMP HRE

LRE: LCALL ZJ ;冷启动,则自检

SETD: MOV 48H,#0AAH ;自检完后,设置为热启动标志字节

MOV 49H,#55H

HRE: MOV A, P1 ;读判采样周期档位

ANL A, #0FH

XRL A, #09H

JZ M17 ;数据掉电保护故不进行采样,分析原数据 SJMP M18

M17: CLR P3.5

AJMP M19

M18: MOV R7, #00H ;非掉电保护方式,则将所有采样数据单元 MOV DPTR,#8020H ;清0

MOV R6, #00H

MOV A, R6

M20: MOVX @DPTR,A

INC R7

INC DPTR

CJNE R7,#00H, M20

M21: MOV R7,#19H

MOV DPTR, #8000H

MOV A, #14H

M1: MOVX @DPTR, A

INC DPTR

DJNZ R7,M1

SETB IT0

CLR P3.5

MOV TMOD,#11H

M0: MOV A, P1

ANL A, #0FH

JNZ M2

MOV TH0,#0FFH ;由T0设置采样周期

MOV TL0,#0F6H

MOV 3EH,#02H

AJMP M10

M2: JB ACC.3,M10

JB ACC.2,M8

JB ACC.1,M7

MOV TH0,#0FFH

MOV TL0,#0CEH

MOV 3EH,#00H

M8: JB ACC.1,M6 JB ACC.0,M5 MOV TH0,#0FCH MOV TL0,#18H MOV 3EH,#10H AJMP M9

M7: JB ACC.0,M4 MOV TH0,#0FFH MOV TL0,#9CH MOV 3EH,#01H AJMP M9

M6: JB ACC.0,M3 MOV TH0,#0ECH MOV TL0,#78H MOV 3EH,#13H AJMP M9

M5: MOV TH0,#0F8H MOV TL0,#30H MOV 3EH,#12H SJMP M9

M4: MOV TH0,#0FEH MOV TL0,#0CH MOV 3EH,#03H SJMP M9

M3: MOV TH0,#0D8H MOV TL0,#0F0H MOV 3EH,#11H SJMP M9

M10: LCALL ERR

M9: MOV 3CH,TL0

MOV 3DH,TH0

MOV A, 3EH

MOV DPTR,#8019H

MOVX @DPTR,A

MOV IE, #8BH

MOV IP, #02H

CLR 00H ;等待INT0采样中断M11: JNB 00H,M11

MOV IE, #88H

M23: MOV DPTR,#0E000H

MOVX A, @DPTR

MOV A, P1

ANL A, #0F0H

MOV DPTR,#801AH

MOVX @DPTR,A

M19: MOV IE, #88H

ACALL ST2 ;建立TB2显示内容表

ACALL CALS ;计算信号峰值、均值、脉宽 LCALL TRS ;工程量转换

M12: MOV DPTR,#0F000H

MOVX A, @DPTR

MOV A, P1 ;读显示方式开关

JB ACC.4, M13

ACALL SD ;固定显示

SJMP M12

M13: JB ACC.5, M14

LCALL XPD ;分页显示

SJMP M12

M14: JB ACC.6, M15

LCALL SLD ;滑移显示

SJMP M12

M15: JB ACC.7, M16

ACALL DCH ;字符显示,将分析结果显示在示波器上

SJMP M12

M16: JB P3.4, M12 ;是否通信?=0,说明要通信

JB P3.3, M16 ;开始通信?=0,说明开始通信;数据通信,以便在上位机上进行数据硬拷贝、FFT分析等

LCALL SENT ;数据向上位机发送通信

SJMP M12

外部中断INT0中断服务程序清单如下:

X0S: MOV DPTR, #2000H ;启动A/D转换

MOVX @DPTR, A

SETB TR0 ;启动T0定时

MOV 3AH, #20H ;存储区首地址0020H

MOV 3BH, #00H

MOV R7, #00H ;存储计数器送初值1024

MOV R6, #04H

CLR 70H ;系统自检标志清除,即为正常的工作程序而非自检X0S0: CLR 01H

X0S1: JNB 01H, X0S1 ;等待T0定时中断

CJNE R6, #00H, X0S0 ;1024个数据全部采样完成?

CJNE R7, #00H, X0S0 ;否,则继续采集

CLR TR0 ;是,则停T0

CLR EX0 ;关外中断INT0

SETB 00H

RETI

相关文档
最新文档