background image
宏晶科技: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