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

📄 hospital2.asm.bak

📁 医院语音寻孚系统的汇编源代码
💻 BAK
字号:
;***********医院接收软件***************
;  I/O PORT PIN DEFINED

RX	BIT	P1.4	;外部中断输入口

D1	BIT	P0.0
D2	BIT	P0.1
D3	BIT	P0.2
D4	BIT	P0.3
D5	BIT	P0.4
D6	BIT	P0.5
D7	BIT	P0.6
D8	BIT	P0.7



;===================  PHILIPS PLC SFR DEFINED BEGAIN =======================

AUXR1	EQU	#0A2h		; 附助功能寄存器
CMP1	EQU	#0ACh		; 比较器 1 控制 寄存器
CMP2	EQU	#0ADh		; 比较器 2 控制 寄存器
DIVM	EQU	#095h		; cpu 时钟 控制
I2CFG	EQU	#0C8h		; I2C 设置寄存器
CT0	bit	I2CFG.0		; 时钟选择0
CT1	bit	I2CFG.1		; 时钟选择1
TIRUN	bit	I2CFG.4		; 计时器 I 使能位
CLRTI	bit	I2CFG.5		; 清除计时器I
MASTRQ	bit	I2CFG.6		; 主控器请求
SLAVEN	bit	I2CFG.7		; 被控器使能
I2CON	EQU	#0D8h		; I2C 控制寄存器
MASTER	bit	I2CON.1		; 主控器状态位
STP	bit	I2CON.2		; 停止探测标志
STR	bit	I2CON.3		; 开始探测标志
ARL	bit	I2CON.4		; 仲裁失败标志
DRDY	bit	I2CON.5		; 数据准备标志位
ATN	bit	I2CON.6		; 注意: I2C 中断标志位
RDAT	bit	I2CON.7		; I2C 读数据
I2DAT	EQU	#0D9h		; I2C 数据寄存器
IEN0	EQU	#0A8h		; 中断使能0
EBO	bit	IEN0.5		; 节电方式中断使能
EWD	bit	IEN0.6		; 看门狗中断使能
ET0	BIT	IEN0.1		;定时器0中断使能
IEN1	EQU	#0E8h		; 中断使能寄存器 1
EI2	bit	IEN1.0		; I2C 中断使能
EKB	bit	IEN1.1		; 键盘中断使能
EC2	bit	IEN1.2		; 比较器 2 中断使能
EC1	bit	IEN1.5		; 比较器 1 中断使能
ETI	bit	IEN1.7		; 计时器 I 中断使能
1IP0	EQU	#0B8h		; 中断优先 0 低位
PBO	bit	IP0.5		; 节电方式中断优先
KBI	EQU	#086h		; 键盘中断
CMP2O	bit	P0.0		; 比较器2 输出
CIN2B	bit	P0.1		; 比较器2 输入B
CIN2A	bit	P0.2		; 比较器2 输入A
PT0AD	EQU	#0F6H		;0口数字输入禁能
PCON	EQU	#087H		;电源控制
;*******自己定义的RAM***********************************************
F_1ST	BIT 20.0H	;是否是接收的第一组数据,=1,是第2组
DATA_READY	BIT	20.1	;数据是否准备好的标志位

D_BUF1	EQU	22H	;从3758接收的数据的存储区
D_BUF2	EQU	23H


;***********************************************************************
ORG 0000H
	AJMP SYS_START

ORG 0003H            ; INT0外部中断0
	CLR EX0
	RETI
   	NOP
   	NOP


ORG 000BH           ; TIME0 OUT定时0中断
	CLR ET0
	RETI
 NOP
 NOP

ORG 0013H           ; INT1外部中断1
	CLR  EX1
	AJMP XINT1
 NOP
 NOP

ORG 001BH          ;  TIME1 OUT定时1中断
	CLR ET1
	RETI
   NOP
   NOP
   NOP

ORG 0023H         ;  COM I/O串口中断
	CLR ES
	RETI
 NOP
 NOP

ORG 002BH         ;TIME2 OUT 降压检测中断
	CLR IEN0.5
	RETI
 NOP
 NOP

ORG 0033H    		;I2C中断
	CLR IEN1.0
	RETI
 NOP
 NOP

ORG 003BH    		;键盘中断
	CLR IEN1.1
	RETI
 NOP
 NOP

ORG 0043H    		;比较器2中断
	CLR IEN1.2
	RETI
 NOP
 NOP

ORG 0053H             ;  WDT TIMER OUT
	CLR IEN0.6
	RETI
 NOP
 NOP

ORG 0063H		;比较器1中断
	CLR IEN1.5
	RETI

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SYS_START:

MAIN:
;*****************用来把D-BUF1和BUF2里的数据发送出去*****************
	JB DATA_READY,SEND_DATA
	AJMP NEXT_STEP
	
	
SEND_DATA:
	


;*******************************************************************

NEXT_STEP:
	AJMP MAIN


;*************外部中断,接收数据*********************
XINT1:
	CLR RX1		;禁止外部中断
	JB RX,XINT1_RETI
	ACALL DELAY_80US
	JB RX,XINT1_RETI
	
	JB F_1ST,GET_2DATA
	SETB F_1ST
	MOV A,P0
	CLR C
	RLC A
	JC GET_NET		;如果最高位是1,这是第2个数据的标志。错误
	MOV D_BUF1,A
	MOV D_400MS,#0A0H	;启动400MS 计时.具体值,须详细定
	AJMP GET_NEXT
					
GET_2DATA:
	MOV A,D_400MS
	JZ GET_NEXT		;如果时间超出了400MS,说明有冲突!放弃!
	
	MOV A,P0
	CLR C
	RLC A
	JNC GET_NEXT		;如果第2次接收的数据是第一组数据,出错!
	
	CLR C
	RLC A
	MOV D_BUF2,A
	MOV D_BUF1.0,C
	
	CLR F_1ST
	SETB DATA_READY		;数据已经准备好,可以发送了
	MOV D_BUF1,#00H
	
GET_NEXT:


XINT1_RETI:
	SETB RX1		;重新起用外部中断
	RETI






⌨️ 快捷键说明

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