第 2 章 spce061a 单片机硬件结构

Download 第 2 章  SPCE061A 单片机硬件结构

If you can't read please download the document

Upload: isaac-jefferson

Post on 13-Mar-2016

61 views

Category:

Documents


8 download

DESCRIPTION

第 2 章 SPCE061A 单片机硬件结构. µ’nSP TM 的内核结构 单片机的片内存储结构 单片机的 I/O 接口 时钟电路 PLL 震荡器 时间基准信号. 低功耗睡眠和唤醒 CTC A/D 转换器 D/A 转换器 LVD/LVR SIO 与 UART. § 2.1 µ ’nSP TM 的内核结构. 1 、 µ ’nSP TM 内核结构. SR: 状态寄存器 NZSC : 4 个标志位 DS :数据段 CS :代码段. N :负标志, bit 15 =1 , N=1 。 Z :零标志 S :符号标志, =1 ,结果应为负。 - PowerPoint PPT Presentation

TRANSCRIPT

  • 2 SPCE061AnSPTMI/OPLLCTCA/DD/ALVD/LVRSIOUART

  • 2.1 nSPTM

  • 1nSPTMSR: NZSC4 DS CSNbit15=1N=1ZS=1C/

  • 216 16 () nSP16 16 MUL 16 MULS (signed signed) (unsigned signed) MUL 12 MULS 10n+6 n MR=[R2]*[R1] 44 MULS46104+6=46nSPMR=[Rd]* [Rs] {,ss} {,n}MR=((Rd))((Rs))+ ((Rd+1))((Rs+1))+ ((Rd+2))((Rs+2)) +

  • 3[2.1]: R1=32767R2=32767R1 0xFFFE R1=32767 //N=0Z=0S=0C=1R1=0x7FFF R2=32767 //N=0Z=0S=0C=1R2=0x7FFF R1+=R2 //N=1Z=0S=0C=0R1=0xFFFE C0 N!=S S0 2.2]: R1=-12345R2=-1R1 0xCFC6 R1=-12345 //N=1Z=0S=0C=1 R1=0xCFC7 R2=-1 //N=1Z=0S=0C=1 R2=0xFFFF R1+=R2 //N=1Z=0S=1C=1 R1=0xCFC6 C1 N=SS1 [2.3]R1=32767R2=-12345R1 0xB038 R1=32767 //N=0Z=0S=0C=1 R1=0x7FFF R2=-12345 //N=1Z=0S=0C=1 R2=0xC7C7 R1-=R2 //N=1Z=0S=0C=0 R1=0xB038 C0N!=SS0

  • S=N=C=Z=

  • 2.2 ROMEPROMEPROMFLASHSRAMSPCE061ASRAM2KWFLASH32KW

  • SPCE061A2KW SRAMI/O32K FALSH ROM0x000000 0x0007FF 0x000800

    0x006FFF0x007000

    0x007FFF0x008000

    0x00FFF50x00FFF60x00FFFF

  • SPCE061A0x07FF*0x0000SPSPSRAM11SP0x07FF(SP)

  • 0x07FF*0x0000(SP)

    SP-1SP+1SPCE061A

    1234

  • FLASHFlashSRAMFlashSPCE061A 32K (32K16 )32K 128 256 0x8000

  • FLASH1 SRAM 2 1. 2. 20mS3

  • FLASH[2.4] //================================================//FLASH.asm //1 //================================================ .INCLUDE hardware.inc .DEFINE C_FLASH_SIZE 0x8000 //flash 32K .DEFINE C_FLASH_BLOCK_SIZE 0x0100 //256 .DEFINE C_FLASH_MATCH 0xAAAA .DEFINE C_FLASH_PAGE_ERASE 0x5511 // .DEFINE C_FLASH_1WORD_PGM 0x5533 // .DEFINE C_FLASH_SEQUENT_PGM 0x5544 // .CODE//===================================================// : F_FlashWrite1Word() //FLASH //1Flash 2 // //=================================================== .public _F_FlashWrite1Word .DEFINE P_Flash_Ctrl 0x7555 _F_FlashWrite1Word: .proc PUSH BP TO [SP] //BP BP = SP + 1 //BPSP+1 R1 = C_FLASH_MATCH //AAAA [P_Flash_Ctrl] = R1 R1 = C_FLASH_1WORD_PGM //5533 [P_Flash_Ctrl] = R1 R1 = [BP+3] //Flash R2 = [BP+4] // [R1] = R2 // POP BP FROM [SP] //BP RETF // .ENDPFLASHSRPCBPSPBP=SP+1//========================================================= // F_FlashWrite() // //1Flash 23 // //========================================================= .public _F_FlashWrite _F_FlashWrite: .proc // PUSH BP TO [SP] //BP BP = SP + 1 //BPSP+1 R1 = [BP+3] //Flash R2 = [BP+4] // R3 = [BP+5] //N R4 = C_FLASH_MATCH //AAAA [P_Flash_Ctrl] = R4 L_FlashWriteLoop: R4 = C_FLASH_SEQUENT_PGM //5544 [P_Flash_Ctrl] = R4 R4 = [R2++] // [R1++] = R4 R3 -= 1 // JNZ L_FlashWriteLoop //0 [P_Flash_Ctrl] = R3 // POP BP FROM [SP] //BP RETF // .ENDP//===================================================// F_FlashErase() //256 //:1 //=================================================== .public _F_FlashErase _F_FlashErase: .proc // PUSH BP TO [SP] //BP BP = SP + 1 R1 = C_FLASH_MATCH //AAAA [P_Flash_Ctrl] = R1 R1 = C_FLASH_PAGE_ERASE //5511 [P_Flash_Ctrl] = R1 R1 = [BP+3] // [R1] = R1 // POP BP FROM [SP] //BP RETF // .ENDP

  • 2.3SPCE061A

  • CPUI/OI/OLCD

  • 1I/OI/O>0.1~5mA25mAI/OI/OI/OI/OI/OI/O

  • SPCE061A I/OI/O8I/OI/O2~3mA20mAI/OCPUI/O(P_IOA_Data)I/O(P_IOA_Buffer)

  • 2SPCE061A I/O16PIOAPIOBI/O816I/OPIOB0~10

  • IO

  • IO

    P_IOA_Data7000H/CPUP_IOA_Buffer7001H/CPUBufferP_IOA_Dir7002H/IO=0=1P_IOA_Attrib7003H/IO=0/=1 =0P_IOA_Latch7004HAIOA 0~7P_IOB_Data7005H/AP_IOB_Buffer7006H/AP_IOB_Dir7007H/AP_IOB_Attrib7008H/AP_FeedBack7009HBB

  • IO

    _Dir_Attrib_Data000001010011100101110111

  • I/OI/O

  • PIOIOA[0] LEDP_IOA_Data[0]___P_IOA_Data[0]___P_IOA_Buffer[0]___ LEDIOA[0]P_IOA_Data[0]P_IOA_Buffer[0]IOA[0]

  • [2.5] IO IO IOA[3~0] IOA[7~4]IOA[11~8]IOA[15~12] R1 = 0x0FF0 //A IOA0~IOA3 IOA12~IOA15 [P_IOA_Data] = R1 //IOA4~IOA7 IOA8~IOA11 R1 = 0xFF00 //A IOA0~IOA8 [P_IOA_Attrib] = R1 // IOA12~IOA15 R1 = 0xFF00 //A IOA0~IOA8 [P_IOA_Dir] = R1 // IOA12~IOA15

    Bit1514131211109876543210_Dir1100_Attrib1100_Data0110

    111111110000

    111111111111

    000000001111

    000000000000

  • [2.6] A VDDR2R3 .INCLUDE hadware.inc // .CODE .PUBLIC _main // _main: R1=0x0000 //A [P_IOA_Data]=R1 //A [P_IOA_Attrib]=R1 //A [P_IOA_Dir]=R1 //A //************A **************// R3=[P_IOA_Data] //P_IOA_Data R3 R2=[P_IOA_Buffer] //P_IOA_Buffer R2 WAIT: JMP WAIT //IOA[15..8] : 60~53IOA[7..0] : 48~41

  • [2.7]I/OB1I/OBR3.DEFINE P_IOB_Data 0x7005 .DEFINE P_IOB_Dir 0x7007 .DEFINE P_IOB_Attrib 0x7008 .DEFINE P_IOB_Buffer 0x7006 .CODE .PUBLIC _main // _main: R1=0xFFFF //B [P_IOB_Dir]=R1 //3 [P_IOB_Data]=R1 R1=0x0000 [P_IOB_ Attrib]=R1 R1=0x0000 //0x0000 [P_IOB_Data]=R1 //****************B****************// R3=[P_IOB_Buffer] // Buffer 0x0000 LOOP: JMP LOOP //IOB0.IOB15

  • P73 678

  • [2.8]A 8 B 8 Key1 B0 ?//**************A B **************// R1 = 0x0000 // R1 0x0000 [P_IOA_Dir] = R1 //A [P_IOA_Attrib] = R1 //A R1 = 0x00FF [P_IOA_Data] = R1 //A R2 = 0X00FF // R2 0x00FF [P_IOB_Dir] = R2 //B [P_IOB_Attrib] = R2 //B [P_IOB_Data] = R2 //B //*********** ***********// R1 = [keycode] //R1 CMP R10x0000 //0 JE _MAIN CMP R1 0x0001 // JE LOOP1 //LOOP1 CMP R1 0x0002 // JE LOOP2 //LOOP2 CMP R1 0x0040 // JE LOOP7 //LOOP7 R2=[P_IOA_Data] //IOB7 R2&=0x0080 [P_IOB_Data]=R2 //IOB7 JMP _MAIN // LOOP1 R2=[P_IOA_Data] //IOB0 R2&=0x0001 //IOB0 [P_IOB_Data]=R2 JMP _MAIN LOOP2 R2=[P_IOA_Data] //IOB1 R2&=0x0002 //IOB1 [P_IOB_Data]=R2 JMP _MAIN LOOP7 R2=[P_IOA_Data] //IOB6 R2&=0x0040 //IOB6 [P_IOB_Data]=R2 JMP _MAIN

  • [2.8]OK!

  • B

    IOB0SCKIOB1SDAIOB2EXT11IO2FeedBack_Output1IOB4RCEXT1EXT1IOB3EXT22IO3FeedBack_Output2IOB5RCEXT2EXT2IOB4FeedBack_Input1IOB5FeedBack_Input2IOB6IRRxIOB7RxIOB8APWMOAPWMIRTxIOB9BPWMOBPWMIOB10Tx

  • P_FeedBack($7009H)**

    b15~b4b3b2b1b0FBKEN3FBKEN21IOB3IOB5 0IOB3IOB5 I/O() 1IOB2IOB4 0IOB2IOB4I/O()

  • [2.9] IOB2 IOB4 RC //IOB4 IOB2 R1=0x0004 [P_IOB_Dir]=R1 //0000000000000100 R1=0x0010 //0000000000010000 [P_IOB_Attrib]=R1 [P_IOB_Data]=R1 // P_FeedBack IOB2IOB4 R1=0x0004 [P_FeedBack]=R1

  • SPCE061A I/OSPCE061ASPCE061A

  • 2.4 C1 20pfC2 20pf32768HzOSC32IOSC32O1V

  • 2.5PLLPhase Lock LoopP_SystemClock(7013H)

    b15~8b7~5b4b3b2~0PLL3276832768CPU132768Hz0 32768Hz1 32768Hz0 32768Hz

  • PLLFosc/nn=1,2,4,8,16,32,64b2~032768HzfoscCPUCLK b2~0=111CPUb7~5P_System_Clock

    b2b1b0n0001001201040118100161013211064111

    b7b6b5fOSC (MHz)00024.57600120.4801032.76801140.961xx49.152

  • [2.11] 1mS R1=0x0023//Fosc20MHzCPUCLKFosc/8=2.56MHz [P_System_Clock]=R1 R3=0x0000DELAY: R2=0x0000LOOP1://3+3+521 1/2560000=0.000090234375S R2+=1//3100S CMP R221//3 JB LOOP1//
  • 2.6

  • P_INT_Ctrlb2~6 32 10 CLKB32HzCTCCTCP_TimeBase_Stup R1=0x0002 [P_TimeBase_Stup]=R1 CTCIRQ456

  • P_TimeBase_Setup($700EH)P452.112.12P_TimeBase_Clear($700FH)

  • 2.7HCMOS2.5V1.8VCPUCPUVA

  • SPCEOSCnormal mode auto-power saving mode.OSCnormal modeauto-power save mode10uASystem clock auto-power saving mode auto-power saving mode7.57.5auto-power saving modenormal mode

  • CPUI/OCPU CPU

  • SPCE061A320.7s3.3V30~50mA3.3V2mA3.3V2A

  • SPCE061ACPUCPUCPUCPUSPCE061AIRQ3_KEYFIQIRQ1~6UART_IRQ

  • [2.12]CPU//R1=0x0000[P_IOA_Attrib]=R1[P_IOA_Dir]=R1[P_IOA_Data]=R1//INT OFFR1=0x0080//[P_Int_Ctrl]=R1INT IRQ//P_IOA_LatchIOA[7-0]R1=[P_ IOA_Latch]//P_SystemClock2~01114//0R1=0x0007[P_SystemClock]=R1//IRQ3.TEXT.PUBLIC _IRQ3_IRQ3R1=0x0100TEST R1 [P_Int_Ctrl] //1JNZ L_IRQ3_Ext1R1=0x0200TEST R1 [P_Int_Ctrl] //2JNZ L_IRQ3_Ext2L_IRQ3_KeyChange_WakeUp//R1=0x0080 //[P_Int_Clear]=R1

    CPU,:IOA[7-0]P_IOA_LatchP_SystemClock2011140

  • P73 16

  • 2.8

  • 2.8 PWM V/P / CTC

  • /

  • CTC EXT1EXT2 [P_TimerA_Data][P_TimerB_Data]

  • CTCA AB1 A016/ EXT1EXT2 IOB2IOB3 TMB1TA_TimeOut_INT 4=APWMO TAOUT? FTAOUT/2?

  • CTCB

  • CTCP_TimerA_Ctrl$700BH)P_TimerB_Ctrl$700DH)TBON b9~6TA/BON=1

    b2~0A000Fosc/2001Fosc/25601032768Hz0118192Hz1004096Hz10111100111EXT1

    b3~5B0002048Hz0011024Hz010256Hz011TMB11004Hz1012Hz1101111EXT2

    b9~6APWMOTAON0000OFF000011/16100102 /16100113 /16101004 /16101015 /16101106 /16101117 /161

    b9~6APWMOTAON10008/16110019 /161101010 /161101111 /161110012 /161110113 /161111014 /1611111TAOUT1

  • :

  • [2.13]R1=0x0005[P_TimerA_ctrl]=R11S,?0.5S,?

    //2048HzR1=0xFBFF [P_TimerA_ctrl]=R1//10240.5S

  • CTC [P_TimerA/B_Ctrl] P_TimerA_Ctrl 5~0/2~0 P_TimerB_Ctrl 2~0PWM PWMP_TimerA/B_Ctrl 9~6 [P_TimerA/B_Data]1 =FFFFH-CTC=/=1/ PWMPWM16 =

  • R1=0x0100 //IOB8 _Dir=1 _Attrib=0[P_IOB_Dir]=R1[P_IOB_Attrib]=R1R1=0x0000[P_IOB_Data]=R1R1=0xFDFF //=65535-512=65023[P_TimerA_Data]=R1R1=0x00F0 //ClkAfosc/2ClkB1=3/16[P_TimerA_Ctrl]=R1APWMO fAPWMO=12.288MHz/512/16=1.5KHz

    P_TimerA_Ctrlb15~10b9~6b5~3b2~0PWM011B110A000

  • P73 18

  • 2.9 A/DADCADC

  • A/D-A/DADCADCADC-ADCDSPADC

  • SPCE061AADCA/D 3ADC380~2V(2-0)/8=250mV102mV 1.3V1011.25V0.05V1.45V0.25V

  • ADC$7015H ( P_ADC_Ctrl )DAC0DAR0SAR + -|AGCMIC_INSHEADECOMPRDYAUTO0110LINEIOA[06]AGCEP_ADC$7014H)P_ADC_MUX _Ctrl bit2~0 DAC0MIC_IN

    b15b14b8b7b6b4b3b2b1b0MICRDY=1COMP =1DAC0-02V1 01VRTPADVREF2DAC=03mA/3V=12mA/3VAUTO 01SHE =1=0AGCE 0AGC 1AGCLINE=0MIC=1LINE_INADE 01A/D

  • 1000000000> 1100000000> 11100000000100000000> 0110000000> 01110000001010000000> 1011000000> 1011100000NNNNNN

  • P_ADC_MUX _Ctrl7015H10 P_ADC(7014H)MIC P_ADC_MUX_Data(702CH)LINEA/DP_DAC_Ctrl b43

    b15b14b13~3b2~0Ready_MUX ()FAIL()Channel_Sel(/)0 LINE_IN AD1LINE_IN AD0MICLINELINEMIC FAIL1MIC0000MIC001LINE_IN1010LINE_IN2011LINE_IN3100LINE_IN4101LINE_IN5110LINE_IN6111LINE_IN7

  • ADC

    FOSC/32/1620.48 MHz24.576MHz32.768MHz40.96 MHz49.152MHz40KHz48KHz64KHz80KHz96KHz

  • LINE_INP_ADC_MUX_Data 10A/DRDY'0'A/DP_ADC_MUX_Data RDY'1'A/D.DEFINE P_IOB_DATA 0x7005 .DEFINE P_IOB_DIR 0x7007 .DEFINE P_IOB_Attrib 0x7008 .DEFINE P_INT_Ctrl 0x7010 .DEFINE P_INT_CLEAR 0x7011 .DEFINE P_ADC_Ctrl 0x7015 .DEFINE P_ADC_MUX_Ctrl 0x702b .DEFINE P_ADC_MUX_DATA 0x702C .DEFINE P_DAC_Ctrl 0x702A .CODE .PUBLIC _main // _main: R1=0xffff //r10xffff [P_IOB_Attrib]=r1 //IOB // [P_IOB_DIR]=r1 R1=0x0000 [P_IOB_DATA]=r1;R1=0x0001 //LINE_INIOA0 LINE_IN1[P_ADC_MUX_Ctrl]=R1R1 = 0x0013 //P_ADC_CtrlA/D[P_ADC_Ctrl] = R1 NOP // NOP NOPNOPNOP_AD: R2=[P_ADC_MUX_Ctrl] //[P_ADC_MUX_Ctrl] //b15AD TEST R2,0x8000JZ _AD //READYR1=[P_ADC_MUX_DATA] //[P_ADC_MUX_DATA] //A/D [P_IOB_Data]=R1; //IOB JMP _AD //_AD MICADC[P_ADC]CTC[P_DAC_Ctrl]43LINE [P_ADC _ LINE _ Data] ADC

    b15b14b8b7b6b4b3b2b1b0MICRDY=1COMP =1DAC0-02V1 01VRTPADVREF2DAC=03mA/3V=12mA/3VAUTO 01SHE =1=0AGCE 0AGC 1AGCLINE=0MIC=1LINE_INADE 01A/D

  • 2.10 DAC&PWMDAC/PWMD/A

  • DAC DAR1DAC110P_DAC1P_DAC_Ctrl 8 7 DAR2DAC210P_DAC2P_DAC_Ctrl 6 5 PWMP_DAC2PWM_LatchPWM_Mode0011AUD1AUD2DAC/PWMDAC1IOB8IOB9DAC2TAON1001TBON[P_Timer_Ctrl]9-6 =0000TAON=0=1

  • [P_DAC_Ctrl](,702AH)PWM_Mode 0 1DAC/PWM 0DAC 1PWMPWM_Latch 0PWM1PWMPWMADC _Latch00P _ ADCADC01TimerAADC10TimerBADC11TimerATimerBADCDAC2 _Latch00DAR2DAC201TimerADAR2DAC210TimerBDAR2DAC211TimerATimerBDAR2DAC2DAC1 _Latch00DAR1DAC101TimerADAR1DAC110TimerBDAR1DAC111TimerATimerBDAR1DAC1

    b15~9b87b65b43b2b1b0DAC1_LatchDAC2_LatchADC_LatchPWM_LatchDAC/PWMPWM_Mode

  • DACP_DAC1DAR1D/ADAR1P_DAC2PWM D/A

  • ADCDAC MIC8KHzPWM//.DEFINEP_TimerA_data0x700a;.DEFINEP_TimerA_ctrl0x700b;.DEFINEP_INT_ctrl0x7010;.DEFINEP_INT_clear0x7011;.DEFINEP_WATCHDOG_clear0x7012;.DEFINEP_ADC 0x7014;.DEFINEP_ADC_ctrl0x7015;.DEFINEP_DAC2 0x7016;.DEFINEP_DAC1 0x7017;.DEFINEP_DAC_ctrl0x702a;.RAM.CODE//ADCDAC//TimerA//----------------------------------------------------------.PUBLIC_main//MAIN_main//MAININTOFFr1=0xFFFF; //=8KHzr1-=0x05DC;// Fosc = 24.576MHz 65535-1500[P_TimerA_data]=r1;// 8KHz =Fosc/2/1500r1=0x0030;//CLKA=Fosc/2CLKB=1[P_TimerA_ctrl]=r1;//APWMO=OFFr1=0x0015;//MICAGC[P_ADC_ctrl]=r1;r1=0x0002;//PWMPWM[P_DAC_ctrl]=r1;//P _ ADCADCr1=0x1000;//TimerAIRQ1[P_INT_ctrl]=r1;INTIRQ;ENDLOOP:r1=0x0001;[P_WATCHDOG_clear]=r1;//jmpENDLOOP//----------------------------------------------------------.PUBLICIRQ;//IRQ1_IRQ1:push r1,r5 to [sp];[P_INT_clear]=r1;r1=[P_ADC];//P _ ADCADC[P_DAC2]=r1;pop r1,r5 from [sp];reti;R1=

  • P73 1921

  • 211

  • SPCE061A2.2VSPCE061A2.2V4FOSC

    P_LVD_Ctrlb15b14~2b10Result_of_LVDLVD_level_defineVLVD0VDD>VLVD1VDD

  • I/OLVRI/OCPU

  • SPCE061AfOSC = 24.576MHzCPUCLK=fOSC /8CPU32768HzAD2VAGCADC DAC3mAPC=FFF7HPIOABI/OACTCabP65

  • PFUSE5VPVINGND1sCPUREADDOWNLOADDEBUG

  • WatchDogWatchdog_Reset=1SWatchdog_Clear= 0.75SClearWatchDogSPCE061AWatchDog WatchDog

    P_WatchDog_Clear(7012H)b 15~1b 00WatchDog1WatchDog

  • 2.12 SIOSIO-Serial I/O interfaceI/O-SPII2 CCPUI/O LCDFLASHSPCE061AIOB0IOB1SCKSDA

  • GSM13281LCD

  • SIO P_SIO_Ctrl($701EH)CPUCLK/4

  • SIOP_SIO_Data($701AH)/SIO8/P_SIO_Addr_LOW($701BH)P_SIO_Addr_Mid($701CH)P_SIO_Addr_High($701DH)SIOP_SIO_Start($701FH)/ SIOSIOb7Busy=1SIOP_SIO_Stop($7020H) SIOSIO

  • SIO1

  • SIO 400H10SPRS512

    B7b6b5b4b3b2b1b0SIO_ConfigR/WR/W_ENClock_SelAddr_Select11001011IOB0SCKIOB1SDACPUCLK/424

  • 2.13 UART

  • UARTUniversal Asynchronous Receiver TransmitterRx Tx GND SPCE061AIOB7RxIOB10TxRS23212VEIA
  • SPCE061AURAT222

  • UART1 P_UART_Data$7023H2

  • P_UART_Command1

    P_UART_Command1(7021H00H76543210RxIntEnTxIntEnI_ResetParityP_Check1UARTRxRDY01UARTTxRDY0101010

  • P_UART_Command2

    P_UART_Command27033HB7B6B5B4B3B2~B0RxPinEN1TxPinEN1 ----RxRDY=1TxRDY=1FE=1OE=1PE=1-

    UARTFE ()TXRX1. 2. OE ()RXTXRX1. 2. PE ()

  • P_UART_BaudScalarLow($7024H) P_UART_BaudScalarHigh($7025H)bps=/=fosc/2/n

    fosc=24.567MHzbpsN15001FHFFH8192240014H00H512048000AH00H2560960005H00H12801920002H80H6403840001H40H3204800001H00H2565120000HF0H2405760000HD6H21310240000H78H12011520000H6BH107

  • [2.21]: UARTPCRS232UART82816SRAM R1=0x0480 //IOB10IOB7[P_IOB_Attrib]=R1 R1=0x0400 [P_IOB_Dir]=R1R1=0x006b //= 12.288MHz/107 = 114.84Kbps[P_UART_BaudScalarLow]=R1 //115.2KbpsR1=0x00[P_UART_BaudScalarHigh]=R1//********UART_command1UART_command2******************//R1=0xC0[P_UART_Command1]=R1[P_UART_Command2]=R1//*****************************************************************//L_begin_loopR4=0 // SRAML_loopR2=0R2=R2 LSL 4 //SBCALL F_UART_RECVR1=R1 LSL 4 //8R1=R1 LSL 4R3=R1R3=R3 and 0xFF00 //R3 =8R2=0R2=R2 LSL 4 //CALL F_UART_RECVR1=R1 and 0x00FF //R1 =8R1=R1 or R3 //R1=UART[R4++]=R1 //SRAMCMP R40x800 //SRAM2048 JNE L_loopJMP L_begin_loop//************************* UART***************************//F_UART_RECVPUSH R2R3 to [SP]L_RxRDYR2= 0x0080 //RxRDY1TEST R2 [P_UART_Command2]JZ L_RxRDY //0R1 = [P_UART_Data] //POP R2R3 from [SP]RETF //

  • P93 26

  • I/OSPCE061AI/OI/O

  • P_IOA4P_IOA12