宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
128
ORG 000BH ;定时器 0 中断服务程序入口
AJMP timer0_Routine
;------------------------------------------------------------------------------
ORG 002BH ;ADC_SPI 中断服务程序入口
AJMP ADC_SPI_Interrupt_Routine
;------------------------------------------------------------------------------
ORG 0080H
MAIN:
CLR LED_MCU_START ;点亮 MCU 开始工作指示灯
MOV SP, #7FH
ACALL Initial_System ;系统初始化
if MASTER_SLAVE == 0
CLR Slave1_SS ;选择从单片机 #1 为当前的从单片机
Check_RS232:
JNB RI, Master_Check_SPI ;判 RS-232 串口中收到数据否
;主单片机 RS-232 串口已收到新的数据
ACALL Get_Byte_From_RS232 ;主单片机将 RS-232 串口中收到的数据送到累加器 A
; ACALL RS232_Send_Byte ;调试用, 将累加器 A 中的数据发送到 PC 机
; SJMP Check_RS232 ;调试用
ACALL SPI_Send_Byte ;主单片机将累加器 A 中的数据发送到从机 SPI
SJMP Check_RS232
Master_Check_SPI:
JNB SPI_Receive, Check_RS232 ;判收到从 SPI 发回的数据否
;主单片机 SPI 端口已收到新的数据
MOV A, SPI_buffer ;将 " 从 SPI 发回的数据 " 送到累加器 A
CLR SPI_Receive ;清 0 主单片机 SPI 端口收到数据标志位
ACALL RS232_Send_Byte ;将累加器 A 中的数据发送到 PC 机
SJMP Check_RS232
else
Slave_Check_SPI:
JNB SPI_Receive, Slave_Check_SPI ;判收到主 SPI 发回的数据否
;从单片机 SPI 端口已收到新的数据
MOV A, SPI_buffer ;取 " 主单片机 SPI 端口发的数据 "
CLR SPI_Receive ;清 0 从单片机 SPI 端口收到数据标志位
if MASTER_SLAVE == 2
ADD A, #1 ;如果是从单片机 #2,就把收到的数据加 1
endif
MOV SPDAT, A ;将收到数据送 SPDAT, 准备下一次通讯时发回
SJMP Slave_Check_SPI
endif
;------------------------------------------------------------------------------
if MASTER_SLAVE == 0
timer0_Routine:
PUSH PSW ;保存断点现场
PUSH ACC