bodu.com

电子/电气工程师博客

正文 更多文章

C8051F040单片机系统初始化程序

  C8051F040单片机系统初始化程序

 

                                                徐丽红   王佰营

                                            wbymcs51.blog.bokee.net

;=====================================================================

;             function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序

;             input:             -----------------

;             output:           -----------------

;             usage:            -----------------

;=====================================================================

              THS0             equ         0b8h;0c6h

              TLS0             equ         00h;0dh

 

              THS1             equ         0fah;0feh;0fah;-4800;0f4h

              TLS1             equ         0fah;0feh;0fah;-4800;0f4h

 

        THS2             equ            0ffh;0feh;0fah;-4800;0f4h

           TLS2             equ           0b8h;0feh;0fah;-4800;0f4h

 

 

Init_TCS:       ;定时器/计数器,中断和串行通讯初始化子程序

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;                        ◆◆◆8051内部控制寄存器◆◆◆

wbymcs51.blog.bokee.net

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

;|    | 代号 |  地址|位寻| B7  |  B6  |  B5  |  B4  |  B3  |  B2  |  B1  |  B0  |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|电源控制| PCON |  87H | NO |SMOD |  --  |  --  |  --  |  GF1 |  GF0 |  PD  |  IDL |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|计时控制| TCON |  88H | YE |TF1  |  TR1 |  TF0 |  TR0 |  IE1 |  IT1 |  IE0 |  IT0 |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|计时模式| TMOD |  89H | NO |1GATE| 1C/T | 1M1  | 1M0  | 0GATE| 0C/T | 0M1  | 0M0  |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|串行控制| SCON |  98H | YE |SM0  | SM1  | SM2  | REN  | TB8  | RB8  | TI   | RI   |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|中断允许| IE   |  A8H | YE |EA   | --   | ET2  | ES   | ET1  | EX1  | ET0  | EX0  |

;|--------|------|------|----|-----|------|------|------|------|------|------|------|

;|中断优先| IP   |  B8H | YE |--   | --   | PT2  | PS   | PT1  | PX1  | PT0  | PX0  |

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

 

;时钟频率为:11.059200MHz;

;机器周期为:12/fosc=1.085069μs;

 

 

;CT0定时器设定延时为:2000μs;

;CT0定时器工作于模式0;

;CT0溢出处理采用中断方式;

;CT0选择内部时钟;

;CT0启动由TR00/1决定;

 

;设定波特率为:   4800bps;

 

;串口0工作于方式1--T1定时器工作于方式2;

;串口1工作于模式3--T2定时器用于波特率发生器 4800bps

       mov        TH0,              #THS0

       mov        TL0,              #TLS0

 

       ; mov        TH1,              #THS1

       ; mov        TL1,              #TLS1

 

         mov        TH2,              #THS2

         mov        TL2,              #TLS2

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;0187H---PCON-------电源控制寄存器

;复位值: 00000000

; 7-2   保留。

;STOP:停机方式选择。

;      向该位写'1'将使 CIP-51 进入停机方式。该位读出值总是为 0

;      0:无影响

;      1CIP-51 被强制进入掉电方式(关闭振荡器

;IDLE:空闲方式选择。向该位写'1'将使 CIP-51 进入空闲方式。该位读出值总是为 0

;      0:无影响

;      1CIP-51 被强制进入空闲方式。(关闭供给 CPU 的时钟信号,但定时器、中断和

;      所有外设保持活动状态。)

;=====================================================================

;|电源控制| PCON |  87H | - |- | - |  -  | -  |  - |  - | STOP | IDLE |

;------------------------------------------------------------------------------------

;             mov        PCON,           #00000000B

              mov        PCON,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;02--88H---TCON----定时器控制寄存器

;复位值: 00000000

;TF1:定时器 1 溢出标志

;     当定时器 1 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 1

;     中断服务程序时该位被自动清 0

;      0:未检测到定时器 1 溢出。

;      1:定时器 1 发生溢出。

;TR1:定时器 1 运行控制

;      0:定时器 1 禁止。

;      1:定时器 1 允许。

;TF0:定时器 0 溢出标志

;     当定时器 0 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 0

;     中断服务程序时该位被自动清 0

;TR0:定时器 0 运行控制

;      0:定时器 0 禁止。

;      1:定时器 0 允许。

;IE1:外部中断 1

;     当检测到一个由 IT1 定义的边沿/电平时,该标志由硬件置位。该位可以用软件

;     0,但当 CPU 转向外部中断 1 中断服务程序时该位被自动清 0(如果 IT1=1)。

;     IT1=0 时,该标志在/INT1 有效时被置'1'(有效电平由 IT01CF 寄存器中 IN1PL 位定义)。

;IT1:中断 1 类型选择

;     该位选择/INT1  中断是边沿触发还是电平触发。可以用 IT01CF  寄存器中的

;     IN1PL 位将/INT1 配置为低电平有效或高电平有效。

;      0/INT1 为电平触发。

;      1/INT1 为边沿触发。

;IE0:外部中断 0

;     当检测到一个由 IT0 定义的边沿/电平时,该标志由硬件置位。该位可以用软件

;     0,但当 CPU 转向外部中断 0 中断服务程序时该位被自动清 0(如果 IT0=1)。

;     IT0=0 时,该标志在/INT0 有效时被置'1'(有效电平由 IT01CF 寄存器中 IN0PL 位定义)。

;IT0:中断 0 类型选择

;     该位选择/INT0  中断是边沿触发还是电平触发。可以用 IT01CF  寄存器中的

;      IN0PL 位将/INT0 配置为低电平有效或高电平有效。

;      0/INT0 为电平触发。

;      1/INT0 为边沿触发。

 

;=====================================================================

;|定时器控制|TCON | 88H | YE |TF1| TR1 | TF0 | TR0 | IE1 |  IT1  | IE0 |IT0

;------------------------------------------------------------------------------------

;             mov        TCON,           #00000000B

              mov        TCON,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;03--89H---TMOD----定时器方式寄存器

;复位值: 00000000

;GATE1:定时器 1 门控位

;       0:当 TR1=1 时定时器 1 工作,与/INT1 的逻辑电平无关。

;       1:只有当 TR1=1 并且/INT1 有效时定时器 1 才工作。

;C/T1:计数器/定时器 1 功能选择。

;      0:定时器功能:定时器 1 T1M 位(CKCON.4)定义的时钟加 1

;      1:计数器功能:定时器 1 由外部输入引脚(T1)的负跳变加 1

;T1M1-T1M0:定时器 1 方式选择 这些位选择定时器 1 的工作方式。

;      T1M1      T1M0      方式

;      0     0     方式 013 位计数器/定时器

;      0     1     方式 116 位计数器/定时器

;      1     0     方式 2:自动重装载的 8 位计数器/定时器

;      1     1     方式 3:定时器 1 停止运行

;GATE0:定时器 0 门控位

;      0:当 TR0=1 时定时器 0 工作,与/INT0 的逻辑电平无关。

;      1:只有当 TR0=1 并且/INT0 有效时定时器 0 才工作。

;C/T0:计数器/时器 0 功能选择。

;      0:定时器功能:定时器 0 T0M 位(CKCON.3)定义的时钟加 1

;      1:计数器功能:定时器 0 由外部输入引脚(T0)的负跳变加 1

;T0M1-T0M0:定时器 0 方式选择 这些位选择定时器 0 的工作方式。   

;      T0M1      T0M0      方式

;      0     0     方式 013 位计数器/定时器

;      0     1     方式 116 位计数器/定时器

;      1     0     方式 2:自动重装载的 8 位计数器/定时器

;      1     1     方式 3:两个 8 位计数器/定时器

 

;=====================================================================

;|定时器方式| TMOD |  89H | - |GATE1| C/T1 | T1M1  | T1M0  | GATE0| C/T0 | T0M1  | T0M0  |

;------------------------------------------------------------------------------------

;             mov        TMOD,          #00000000B

              mov        TMOD,          #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;04--8CH---OSCXCN----外部振荡器控制寄存器

;复位值: 00000000

;XTLVLD:晶体振荡器有效标志(只在 XOSCMD11x 时有效,只读)

;       0:晶体振荡器未用或未稳定。

;       1:晶体振荡器正在运行并且工作稳定。

;XOSCMD2-0:外部振荡器方式位

;       00x:外部振荡器关闭。

;       010:外部 CMOS 时钟方式(外部 CMOS 时钟输入到 XTAL1 引脚)

;      011:外部 CMOS 时钟二分频方式(外部 CMOS 时钟输入到 XTAL1 引脚)      

;      10xRC/C 振荡器方式二分频。

;      110:晶体振荡器方式。

;      111:晶体振荡器方式二分频。

; 3   保留。读  = 0,写  =  忽略。

;XFCN2-0:外部振荡器频率控制位。

;      XFCN     晶体(XOSCMD=11x      RC(XOSCMD=10x)      C(XOSCMD=10x)

;      000  f 32 kHz   f 25 kHz   K 因子= 0.87

;      001  32 kHz < f 84 kHz  25 kHz < f 50 kHz    K 因子= 2.6

;      010  84 kHz < f 225 kHz  50 kHz < f 100 kHz  K 因子= 7.7

;      011  225 kHz < f 590 kHz 100 kHz < f 200 kHz K 因子= 22

;      100  590 kHz < f 1.5 MHz       200 kHz < f 400 kHz K 因子= 65

;      101  1.5 M Hz < f 4 MHz 400 kHz < f 800 kHz K 因子= 180

;      110  4 MHz < f10 MHz     800 kHz < f 1.6 MHz       K 因子= 664

;      111  10 MHz < f30 MHz   1.6 MHz < f 3.2 MHz       K 因子= 1590

 

;GATE0:定时器 0 门控位

;      0:当 TR0=1 时定时器 0 工作,与/INT0 的逻辑电平无关。

;      1:只有当 TR0=1 并且/INT0 有效时定时器 0 才工作。

;C/T0:计数器/时器 0 功能选择。

;      0:定时器功能:定时器 0 T0M 位(CKCON.3)定义的时钟加 1

;      1:计数器功能:定时器 0 由外部输入引脚(T0)的负跳变加 1

;T0M1-T0M0:定时器 0 方式选择 这些位选择定时器 0 的工作方式。   

;      T0M1      T0M0      方式

;      0     0     方式 013 位计数器/定时器

;      0     1     方式 116 位计数器/定时器

;      1     0     方式 2:自动重装载的 8 位计数器/定时器

;      1     1     方式 3:两个 8 位计数器/定时器

 

;=====================================================================

;|外部振荡器控制| OSCXCN |  8CH | - |XTLVLD| XOSCMD2| XOSCMD0 | XOSCMD0  | -| XFCN2 | XFCN1  | XFCN1 |

;------------------------------------------------------------------------------------

;             mov        OSCXCN,             #00000000B

              mov        OSCXCN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;05--8EH---CKCON----时钟控制寄存器

;复位值: 00000000

;T3MH:定时器 3 高字节时钟选择。

;      该位选择供给定时器 3 高字节的时钟(如果定时器 3 被配置为两个 8 位定时器)。 定时器 3

;      工作在其他方式时该位被忽略。

;      0:定时器 3 高字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。

;      1:定时器 3 高字节使用系统时钟。

;T3ML:定时器 3 低字节时钟选择。

;      该位选择供给定时器 3 的时钟。如果定时器 3 被配置为两个 8 位定时器,该位 选择供给低

;      8 位定时器的时钟。

;      0:定时器 3 低字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。

;      1:定时器 3 低字节使用系统时钟。

;T2MH:定时器 2 高字节时钟选择。

;      该位选择供给定时器 2 高字节的时钟(如果定时器 2 被配置为两个 8 位定时器)。 定时器 2

;      工作在其他方式时该位被忽略。

;      0:定时器 2 高字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。

;      1:定时器 2 高字节使用系统时钟。

;T2ML:定时器 2 低字节时钟选择。

;      该位选择供给定时器 2 的时钟。如果定时器 2 被配置为两个 8 位定时器,该位 选择供给低 8

;      位定时器的时钟。

;      0:定时器 2 低字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。

;      1:定时器 2 低字节使用系统时钟。

;T1M:定时器 1 时钟选择。

;     该位选择定时器 1 的时钟源。当 C/T1 被设置为逻辑'1'时,T1M 被忽略。

;      0:定时器 1 使用由分频位(SCA1-SAC0)定义的时钟。

;      1:定时器 1 使用系统时钟

;T0M:定时器 0 时钟选择。

;    该位选择定时器 0 的时钟源。当 C/T0 被设置为逻辑'1'时,T0M 被忽略。

;      0:定时器 0 使用由分频位(SCA1-SAC0)定义的时钟。

;      1:定时器 0 使用系统时钟

;SCA1-SCA0:定时器 0/1 分频位

;    如果定时器 0/1 被配置为使用分频时钟,则这些位控制时钟分频数。

 

;      SCA1      SCA0      分频时钟

;      0     0     系统时钟/12

;      0     1     系统时钟/4

;      1     0     系统时钟/48

;      1     1     外部时钟/8

 

;      注:外部时钟 8 分频与系统时钟同步,在该方式,外

;      部时钟频率必须小于或等于系统时钟频率。

;=====================================================================

;|时钟控制寄存器| CKCON |  8EH | - |T3MH | T3ML  |  T2MH | T2ML |  T1M |  T0M | SCA1 | SCA0 |

;-----------------------------------------------------------------------------------------------

;             mov        CKCON,        #x0000000B

              mov          CKCON,        #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;06--8FH---PSCTL----程序存储读写控制

;复位值: 00000000

; 7-2 未使用。读 = 000000b,写 =  忽略。

;PSEE:程序存储擦除允许

;      将该位置'1'后允许擦除 FLASH 存储器中的一个页(前提是 PSWE 位也被 '1')。在将该位置'1'后,用 MOVX 指令进行一次写操作将擦除包含 MOVX 指令寻址地址的那个 FLASH 页。用于写操作的数据可以是任意值。

;      0:禁止擦除 FLASH 存储器。

;      1:允许擦除 FLASH 存储器。

;PSWE:程序存储写允许

;      将该位置'1'后允许用 MOVX 指令向 FLASH 存储器写一个字节。在写数据 之前必须先进行擦除。

;      0:禁止写 FLASH 存储器。

;      1:允许写 FLASH 存储器;MOVX 写指令寻址 FLASH 存储器。

;=====================================================================

;|程序存储读写控制|PSCTL | 8FH | - |- | - | - |  -  |  -  |  -  | PSEE |  PSWE

;------------------------------------------------------------------------------------

;             mov        PSCTL,          #00000000B

              mov        PSCTL,          #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;07--91H---SSTA0----UART0 状态和时钟选择寄存器

;复位值: 00000000

;FE0:帧错误标志。该位指示是否检测到无效(低电平)停止位。

;      0:未检测到帧错误。

;      1:检测到帧错误。

;RXOV0:接收溢出标志。该位指示新数据已经被锁存到接收缓冲器,而前一字节未被读取。

;      0:未检测到接收溢出。

;      1:检测到接收溢出。

;TXCOL0:发送冲突标志。该位指示发送过程正在进行时用户软件向 SBUF0 寄存器写入数据。

;      0:未检测到发送冲突。

;      1:检测到发送冲突。

;SMOD0UART0 波特率加倍使能。该位使能/禁止 UART0 波特率逻辑的波特率 2 分频功能。

;      0:使能 UART0 的波特率 2 分频功能。

;      1:禁止 UART0 的波特率 2 分频功能。

;UART0 发送波特率时钟选择位;

;      S0TCLK1       S0TCLK0       串行发送波特率时钟源

;      0     0     定时器 1 溢出产生 UART0 发送波特率

;      0     1     定时器 2 溢出产生 UART0 发送波特率

;      1     0     定时器 3 溢出产生 UART0 发送波特率

;      1     1     定时器 4 溢出产生 UART0 发送波特率

;UART0 接收波特率时钟选择位

;      S0RCLK1       S0RCLK0       串行接收波特率时钟源

;      0     0     定时器 1 溢出产生 UART0 接收波特率

;      0     1     定时器 2 溢出产生 UART0 接收波特率

;      1     0     定时器 3 溢出产生 UART0 接收波特率

;      1     1     定时器 4 溢出产生 UART0 接收波特率

;注:FE0RXOV0 TXCOL0 只作为标志位使用,不用于产生中断。

;===============================================================================================

;|UART0 状态和时钟选择寄存器| SSTA0 |  91H | - |FE0 | RXOV0 | TXCOL0 | SMOD0 | S0TCLK1 |  S0TCLK0 |S0RCLK1 | S0RCLK0|

;-----------------------------------------------------------------------------------------------

;             mov        SSTA0,          #x0000000B

              mov          SSTA0,          #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;0896H---SFRPGCN-------SFR 页控制寄存器

;复位值: 00000001

; 7-1   保留

;SFRPGENSFR 自动页控制使能位。

;      发生中断时,C8051 核将转向特定的中断服务程序,并自动将 SFR 页切换到相

;      应外设或功能的 SFR 页。该位用于控制这种自动切换功能。

;      0:自动页控制功能被禁止。C8051 核不会自动切换到相应的 SFR 页(即包含中

;      断源所在外设/功能的 SFR SFR 页)。

;      1:自动页控制功能被使能。中断发生时,C8051 SFR 页切换到包含中断源所

;      在外设/功能的 SFR SFR 页)。

;=====================================================================

;|SFR页控制寄存器| SFRPGCN |  96H | - |- |- |  - | -  | - |  - | - | SFRPGEN |

;------------------------------------------------------------------------------------

;             mov        SFRPGCN,            #00000000B

              mov        SFRPGCN,            #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;0997H---CLKSEL-------系统时钟选择寄存器

;复位值: 00000000

; 7-1   保留。

;CLKSL:系统时钟源选择位

;      0SYSCLK 源自内部振荡器,分频数由 OSCICN 寄存器中的 IFCN 位决定。

;      1SYSCLK 源自外部振荡器。

;=====================================================================

;|系统时钟选择| CLKSEL |  97H | - |- |- |  - | -  | - |  - | - | CLKSL |

;------------------------------------------------------------------------------------

;             mov        CLKSEL,              #00000000B

              mov        CLKSEL,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;10--98H---SCON0----UART0 控制寄存器

;复位值: 00000000

;SM00-SM10:串行口工作方式。

;      写:当被写入时,这两位按下表选择串行口工作方式:

;      SM00      SM10      方式

;      0     0     方式 0:同步方式

;      0     1     方式 18 UART,可变波特率

;      1     0     方式 29 UART,固定波特率

;      1     1     方式 39 UART,可变波特率

;      读:读这两位时返回 UART0 的当前工作方式。

;SM20:多处理器通信使能位 该位的功能取决于串行口工作方式。

;      方式0:无作用。

;      方式 1:检查有效停止位

;      0:停止位的逻辑电平被忽略。

;      1:只有当停止位为逻辑电平 1 RI0 激活

;      方式 2 和方式 3:多机通信使能?

;      0:第九位的逻辑电平被忽略。

;      1:只有当第九位为逻辑 1 并且接收到的地址与 UART0 地址或广播地 址匹配时 RI0 才被置位并产生中断

;REN0:接收允许该位允许/禁止 UART0 接收。

;      0UART0 接收禁止

;      1UART0 接收允?

;TB80:第九发送位该位的逻辑电平被赋值给方式 2 3 的第九发送位。在方式 0 1 中未用。

;      据需要用软件置位或清 0

;RB80:第九接收位该位被赋值为方式 2 3 中第九接收位的逻辑电平。在方式 1,如果 SM20

;      逻辑 0,则 RB80 被赋值为所接收到的停止位的逻辑电平。RB80 在方式 0 中未 用。

;TI0:发送中断标志当 UART0 发送完一个字节数据时(方式 0 时是在发送完第 8 位后,其它方式

;      在停止位的开始)该位被硬件置 1。在 UART0 中断被允许时,置 1 该位将导致 CPU 转到 UART0

;      中断服务程序。该位必须用软件手动清

;RI0:接收中断标志

;      UART0 接收到一个字节数据时(根据 SM20 位的选择)该位被硬件置 1

;      UART0 中断被允许时,置 1 该位将会使 CPU 转到 UART0 中断服务程序。 该位必须用软件手动清 0

;=====================================================================

;|UART0 控制寄存器|SCON0 | 98H | YE |SM00| SM10 | SM20 | REN0 | TB80| RB80 | TI0 |RI0

;------------------------------------------------------------------------------------

;             mov        SCON0,         #00000000B

              mov        SCON0,         #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;11--98H---SCON1----UART1 控制寄存器

;复位值: 01000000

;S0M1DE:串行口工作方式选择位

;       该位选择 UART1 的工作方式。

;      0:方式 0:波特率可编程的 8 UART

;      1:方式 1:波特率可编程的 9 UART

; 6   未使用。读 = 1b。写 =  忽略。

;MCE1:多处理器通信允许 该位的功能取决于串行口工作方式。

;      S0M1DE = 0:检查有效停止位。

;      0:停止位的逻辑电平被忽略。

;      1:只有当停止位为逻辑'1' RI1 激活。

;      S0M1DE = 1:多处理器通信允许。

;      0:第 9 位的逻辑电平被忽略。

;      1:只有当第 9 位为逻辑'1' RI1 才被置位并产生中断。

;REN1:接收允许

;      该位允许/禁止 UART 接收器。

;      0UART 接收禁止。

;      1UART 接收允许。

;TB81:第九发送位

;      该位的逻辑电平被赋值给 9 UART 方式的第九发送位。在 8 UART 方式中 未用。

;      跟据需要用软件置'1'或清'0'

;RB81:第九接收位

;      在方式 0,则 RB80 被赋值为停止位的值。在方式 1 该位被赋值为 9 UART 式中第九数据位的值。

;TI1:发送中断标志

;     UART 发送完一个字节数据后该位被硬件置'1'(在 8 UART 方式时,是 在发送第 8 位后

;     ;在 9 UART 方式时,是在停止位开始)。当 UART0 中断被 允许时,置'1'该位将导致 CPU 转到

;     UART0 中断服务程序。该位必须用软件 '0'

;RI1:接收中断标志

;     UART0 接收到一个字节数据时该位被硬件置'1'(在停止位后)。当 UART1 中断被允许时,置'1'

;     该位将会使 CPU 转到 UART1 中断服务程序。该位必须 用软件清'0'

;=====================================================================

;|UART1 控制寄存器|SCON1 | 98H | - |S0M1DE| - | MCE1 | REN1 | TB81| RB81 | TI1 |RI1

;------------------------------------------------------------------------------------

;             mov        SCON1,         #00000000B

              mov        SCON1,         #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;12--9AH---SPI0CFG----SPI0 配置寄存器

;复位值: 00000111

;SPIBSYSPI 忙标志(只读)

;      当一次 SPI 传输正在进行时(主或从方式),该位被置为逻辑 1

;MSTEN:主方式使能位

;      0:禁止主方式,工作在从器件方式。

;      1:使能主方式,工作在主器件方式。

;CKPHASPI0 时钟相位。;该位控制 SPI0 时钟的相位。

;      0:在 SCK 周期的第一个边沿采样数据。?

;      1:在 SCK 周期的第二个边沿采样数据。?

;CKPOLSPI0 时钟极性 该位控制 SPI0 时钟的极性。

;      0SCK 在空闲状态时处于低电平。

;      1SCK 在空闲状态时处于高电平。

;SLVSEL:从选择标志(只读)。当 NSS 引脚为低电平时该位被置 1,表示 SPI0 是被选中的从器件。当 NSS

;      脚为高电平时(未被选中为从器件)该位被清 0。该位不指示 NSS 引脚的即时 值,而是该引脚输入的去噪信号。

;NSSINNSS 引脚瞬时值(只读)该位指示读该寄存器时 NSS 引脚的即时值。该信号未被去噪。

;SRMT:移位寄存器空标志(只在从方式有效,(只读))。 当所有数据都被移入/移出移位寄存器并且没有新数

;      据可以从发送缓冲器读出 或向接收缓冲器写入时,该位被置 1。当数据字节被从发送缓冲器传送到移位

;      寄存器时,该位被清 0

;      注:在主方式,SRMT = 1

;RXBMT:接收缓冲器空标志(只在从方式有效,只读) 当接收缓冲器被读取且没有新数据时,该位被置 1。如果

;      在接收缓冲器中有新 数据未被读取,则该位被清 0

;      注:在主方式,RXBMT = 1

;=====================================================================

;|SPI0 配置寄存器| CPT1CN | 9AH | - |SPI0CFG| CP1OUT |CP1RIF|CP1FIF|CP1HYP1|CP1HYP0 |CP1HYN1|CP1HYN0 |

;-----------------------------------------------------------------------------------------------

;             mov        SPI0CFG,              #x0000000B

              mov          SPI0CFG,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;13--9BH---CPT0CN----比较器 0 控制寄存器

;复位值: 00000000

;CP0EN:比较器 0 使能位

;      0:比较器 0 禁止。

;      1:比较器 0 使能。

;CP0OUT:比较器 0 输出状态标志

;      0:电压值 CP0+ < CP0-

;      1:电压值 CP0+ > CP0-

;CP0RIF:比较器 0 上升沿中断标志

;      0:自该标志位被清除后,没有发生过比较器 0 上升沿中断。

;      1:自该标志位被清除后,发生了比较器 0 上升沿中断

;CP0FIF:比较器 0 下降沿中断标志

;      0:自该标志位被清除后,没有发生过比较器 0 下降沿中断。

;      1:自该标志位被清除后,发生了比较器 0 下降沿中断

;CP0HYP1-0:比较器 0 正向回差电压控制位

;      00:禁止正向回差电压。

;      01:正向回差电压= 5mV

;      10:正向回差电压= 10mV

;      11:正向回差电压= 20mV

;CP0HYN1-0:比较器 0 负向回差电压控制位

;      00:禁止负向回差电压。

;      01:负向回差电压= 5mV

;      10:负向回差电压= 10mV

;      11:负向回差电压= 20mV

;=====================================================================

;|比较器0控制|CPT0CN|  9BH | - |CP0EN |CP0OUT |CP0RIF|CP0FIF|CP0HYP1|CP0HYP0|CP0HYN1|CP0HYN0

;------------------------------------------------------------------------------------

;             mov        CPT0CN,              #00000000B

              mov        CPT0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;149CH---CPT1MD-------比较器方式选择寄存器

;复位值: 00000010

; 7-6 未用。读 = 00b,写 =  忽略。

;CP1RIE:比较器 1 上升沿中断允许

;      0:比较器 1 上升沿中断禁止

;      1:比较器 1 上升沿中断允许

;CP1FIE:比较器 1 下降沿中断允许

;      0:比较器 1 下降沿中断禁止

;      1:比较器 1 下降沿中断允许

; 3-2 未用。读 = 00b,写 =  忽略。

;CP1MD1-0:比较器 1 方式选择

;        这两位选择比较器 1 的响应时间。

;        方式    CP1MD1 CP1MD0 CP1 响应时间(典型值)

;         0       0    0     最快响应时间

;         1       0    1     -

;         2       1    0     -

;         3       1    1     最慢响应时间

;=====================================================================

;|比较器方式|CPT1MD | 9CH | - |- | - | CP1RIE | CP1FIE  | - |  -  | CP1MD1 | CP1MD0

;------------------------------------------------------------------------------------

;             mov        CPT1MD,              #00000000B

              mov        CPT1MD,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;15--9DH---SPI0CKR----SPI0 时钟速率寄存器

;复位值: 00000000

;SCR7-SCR0SPI0 时钟频率设置位。

;      SPI0 模块被配置为工作于主方式时,这些位决定 SCK 输出的频率。SCK 钟频率是从

;      系统时;   钟分频得到的,由下面的方程给出,其中:SYSCLK 是系统 时钟频率,SPI0CKR

;      SPI0CKR 寄存器中的 8 位值。

;=====================================================================

;|SPI0 时钟速率寄存器| SPI0CKR | 9DH | - |SCR7 | SCR6 |SCR5|SCR4| SCR3 | SCR2  | SCR1 |SCR0

;------------------------------------------------------------------------------------

;             mov        SPI0CKR,             #00000000B

              mov        SPI0CKR,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;16--9EH---CPT1MX----比较器 1 MUX 选择寄存器

;复位值: 00000000

; 7-6 未用。读 = 00b,写 =  忽略。

;CMX1N1-0:  比较器 1 负输入 MUX 选择 这两位选择作为比较器 1 负输入的端口引脚。

;        CMX1N1    CMX1N0       比较器负输入

;        0         0    P1.3

;        0         1    P1.7

;        1         0    P2.3

;        1         1    P2.7

; 3-2 未用。读 = 00b,写 =  忽略。

;CMX1P1-0:  比较器 1 正输入 MUX 选择 这两位选择作为比较器 1 正输入的端口引脚。

;        CMX1P1    CMX1P0 比较器正输入

;        0           0      P1.2

;       0           1      P1.6

;        1           0      P2.2

;        1           1        P2.6

;=====================================================================

;|比较器1MUX| CPT1MX |  9EH | - |- | - | CMX1N1 | CMX1N0 | -  |  -  |  CMX1P1  | CMX1P1

;------------------------------------------------------------------------------------

;             mov        CPT1MX,              #00000000B

              mov        CPT1MX,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;17--9FH---CPT0MX----比较器 0 MUX 选择寄存器

;复位值: 00000000

; 7-6 未用。读 = 00b,写 =  忽略。

;CMX0N1-0:  比较器 0 负输入 MUX 选择 这两位选择作为比较器 0 负输入的端口引脚。

;      CMX0N1       CMX0N0       比较器负输入

;      0     0     P1.1

;      0     1     P1.5

;      1     0     P2.1

;      1     1     P2.5

; 3-2 未用。读 = 00b,写 =  忽略。

;CMX0P1-0:  比较器 0 正输入 MUX 选择 这两位选择作为比较器 0 正输入的端口引脚。

;      CMX0P1 CMX0P0 比较器正输入

;      0     0     P1.0

;      0     1     P1.4

;      1     0     P2.0

;      1     1     P2.4

;=====================================================================

;|比较器0 MUX|CPT0MX| 9FH | - |-| - | CMX0N1 | CMX0N0 | -| - |CMX0P1|CMX0P0|

;------------------------------------------------------------------------------------

;             mov        CPT0MX,              #00000000B

              mov        CPT0MX,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;18--A1H---EMI0TC----外部存储器时序控制

;复位值: 11111111

;EAS1-0EMIF 地址建立时间位。

;       00:地址建立时间  = 0  SYSCLK 周期。

;      01:地址建立时间  = 1  SYSCLK 周期。

;      10:地址建立时间  = 2  SYSCLK 周期。

;      11:地址建立时间  = 3  SYSCLK 周期。

;EWR3-0EMIF /WR /RD 脉冲宽度控制位。

;      0000/WR /RD 脉冲宽度  = 1  SYSCLK 周期。

;      0001/WR /RD 脉冲宽度  = 2  SYSCLK 周期。

;      0010/WR /RD 脉冲宽度  = 3  SYSCLK 周期。

;      0011/WR /RD 脉冲宽度  = 4  SYSCLK 周期。

;      0100/WR /RD 脉冲宽度  = 5  SYSCLK 周期。

;      0101/WR /RD 脉冲宽度  = 6  SYSCLK 周期。

;      0110/WR /RD 脉冲宽度  = 7  SYSCLK 周期。

;      0111/WR /RD 脉冲宽度  = 8  SYSCLK 周期。

;      1000/WR /RD 脉冲宽度  = 9  SYSCLK 周期。

;      1001/WR /RD 脉冲宽度  = 10  SYSCLK 周期。

;      1010/WR /RD 脉冲宽度  = 11  SYSCLK 周期。

;      1011/WR /RD 脉冲宽度  = 12  SYSCLK 周期。

;      1100/WR /RD 脉冲宽度  = 13  SYSCLK 周期。

;      1101/WR /RD 脉冲宽度  = 14  SYSCLK 周期。

;      1110/WR /RD 脉冲宽度  = 15  SYSCLK 周期。

;      1111/WR /RD 脉冲宽度  = 16  SYSCLK 周期

;EAH1-0EMIF 地址保持时间位。

;      00:地址保持时间  = 0  SYSCLK 周期。

;      01:地址保持时间  = 1  SYSCLK 周期。

;      10:地址保持时间  = 2  SYSCLK 周期。

;      11:地址保持时间  = 3  SYSCLK 周期。

;=====================================================================

;|外部存储器时序控制|EMI0TC | A1H | -|EAS1| EAS0 |EWR3 |EWR2 |EWR1|EWR0|EAH1|EAH0

;------------------------------------------------------------------------------------

;             mov        EMI0TC,        #00000000B

              mov        EMI0TC,        #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;19--A2H---EMI0CN----外部存储器接口控制

;复位值: 00000000

;PGSEL[7:0]XRAM 页选择位

;当使用 8 位的 MOVX 命令时,XRAM 页选择位提供 16 位外部数据存储器

; 址的高字节,实际上是选择一个 256 字节的 RAM 页。

;0x000x0000 - 0x00FF

;0x010x0100 - 0x01FF

;...

;0xFE0xFE00 - 0xFEFF

;0xFF0xFF00 - 0xFFFF

;=====================================================================

;|外部存储器接口控制|EMI0CN | A2H | - |PGSEL7| PGSEL6 | PGSEL5| PGSEL4 | PGSEL3 | PGSEL2 | PGSEL1 |PGSEL0

;------------------------------------------------------------------------------------

;             mov        EMI0CN,              #00000000B

              mov        EMI0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;20--A3H---EMI0CF----外部存储器接口配置

;复位值: 00000011

; 7-6   未用。读  = 00b,写  =  忽略。

;PRTSELEMIF 端口选择位

;      0EMIF P0-P3

;      1EMIF P4-P7

;EMD2EMIF 复用方式选择位

;      0EMIF 工作在地址/数据复用方式。

;      1EMIF 工作在非复用方式(独立的地址和数据引脚)?

;EMD1-0EMIF 工作模式选择位这两位控制外部存储器接口的工作模式。

;00:只用内部存储器。MOVX 只寻址片内 XRAM。所有有效地址都指向片内 存储器空间。

;01:不带块选择的分片方式。寻址低于 4K 边界的地址时访问片内存储器,寻 址高于

;    4K 边界的地址时访问片外存储器? 位片外 MOVX 操作使用地址高端 口锁存器的当前内容作为地址的?

;    高字节。注意:为了能访问片外存储器空间,

;    EMI0CN 必须被设置成一个不属于片内地址空间的页地址。

;10:带块选择的分片方式。寻址低于 4K 边界的地址时访问片内存储器,寻址 高于 4K 边界

;    的地址时访问片外存储器。8 位片外 MOVX操作使用 EMI0CN 的内容作为地址的高字节。

;11:只用外部存储器。MOVX 只寻址片外 XRAM。片内 XRAM CPU 为不可见。

;EALE1-0ALE 脉冲宽度选择位(只在 EMD2 =0 时有效)

;      00ALE 高和 ALE 低脉冲宽度  = 1 SYSCLK 周期。

;      01ALE 高和 ALE 低脉冲宽度  = 2 SYSCLK 周期。

;      10ALE 高和 ALE 低脉冲宽度  = 3 SYSCLK 周期。

;      11ALE 高和 ALE 低脉冲宽度  = 4 SYSCLK 周期。

;=====================================================================

;|外部存储器接口配置|EMI0CF | A3H | - |-| - | PRTSEL | EMD2  | EMD1 |  EMD0  | EALE1 |EALE0

;------------------------------------------------------------------------------------

;             mov        EMI0CF,        #00000000B

              mov        EMI0CF,        #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;21A8H---IE----------中断使能

;(可位寻址)

;EA:允许所有中断「梦辉市恚顾兄卸稀K剿械牡ジ鲋卸掀帘紊柚谩?

;      0:禁止所有中断源。

;      1:开放中断。每个中断由它对应的中断屏蔽设置决定。

;IEGF0:通用标志位 0

;      该位用作软件控制的通用标志位。 ?

;ET2:定时器 2 中断允许位?

;      该位用于设置定时器 2 的中断屏蔽。

;      0:禁止定时器 2 中断。

;      1:允许 TF2L TF2H 标志的中断请求。

;ES0UART0 中断允许位。该位设置 UART0 的中断屏蔽。

;      0:禁止 UART0 中断。

;      1:允许 UART0 中断。

;ET1:定时器 1 中断允许位。 该位用于设置定时器 1 的中断屏蔽。

;      0:禁止定时器 1 中断。

;      1:允许 TF1 标志位的中断请求。

;EX1:外部中断 1 允许位。该位用于设置外部中断 1 的中断屏蔽。

;      0:禁止外部中断 1

;      1:允许/INT1 引脚的中断请求

;ET0:定时器 0 中断允许位,该位用于设置定时器 0 的中断屏蔽。

;      0:禁止定时器 0 中断。

;      1:允许 TF0 标志位的中断请求。

;EX0:外部中断 0 允许位。该位用于设置外部中断 0 的中断屏蔽。

;      0:禁止外部中断 0

;      1:允许/INT0 引脚的中断请求

;-----------------------------------------------------------------------------------

;位:7           6         5          4          3          2          1          0

;    EA        IEGF0       ET2        ES0     ET1    EX1         ET0   EX0

;RST:0           0         0          0          0          0          0          0

;-----------------------------------------------------------------------------------

              ;mov              IE,          #1101 0010

              mov        IE,          #0d2h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;22--A9H---CLKSEL----时钟选择寄存器

;复位值: 00000000

; 7-1  未用。读 = 0000000b,写 =  忽略。

;CLKSL0:系统时钟源选择位

       ;0SYSCLK 取自内部振荡器,分频数由 OSCICN 寄存器中的 IFCN 位决定。

       ;1SYSCLK 取自外部振荡器

;=====================================================================

;|时钟选择寄存器| CLKSEL | A9H | - |FOSE| - | - | -  | - |  -  | - |CLKSL0

;------------------------------------------------------------------------------------

;             mov        CLKSEL,              #00000000B

              mov        CLKSEL,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;23--AAH---EMI0CN----外部存储器接口控制

;复位值: 00000000

; 7-2  未用-读为 000000b,写 =  忽略。

;PGSELXRAM 页选择位

;    当使用 8 位的 MOVX 命令时,XRAM 页选择位提供 16 位外部数据存储器地 址的高字节,实际上是选择一个 256 字节的 RAM 页。由于该寄存器的高位(未 使用)总是为 0PGSEL 决定要访问的 XRAM 页。

;    例如:如果 EMI0CN = 0x01,则地址 0x100-0x1FF 将被访问。

;====================================================================================

;|外部存储器接口控制| EMI0CN | AAH | - |FOSE| - | - | -  | - |  -  |PGSEL|PGSEL

;------------------------------------------------------------------------------------

;             mov        EMI0CN,              #00000000B

              mov        EMI0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;24--B1H---OSCXCN----外部振荡器控制寄存器

;复位值: 00000000

;XTLVLD:晶体振荡器有效标志,(在 XOSCMD11x 时有效,只读)

;      0:晶体振荡器未用或未稳定。

;      1:晶体振荡器正在运行并且工作稳定。

;  XOSCMD2-0:外部振荡器方式位

;      00x:外部振荡器电路关闭。

;      010:外部 CMOS 时钟方式。

;      011:外部 CMOS 时钟方式二分频。

;      100RC 振荡器方式。

;      101:电容振荡器方式。

;      110:晶体振荡器方式。

;      111:晶体振荡器方式二分频。

; 3   保留。读 = 0,写 =  忽略。

;XFCN2-0:外部振荡器频率控制位。

;      XFCN     晶体(XOSCMD=11x      RC(XOSCMD=10x)      C(XOSCMD=10x)

;      000  F 32kHz   F 25kHz   K 因子= 0.87

;      001  32kHz  < f 84kHz  25kHz  < f 50kHz  K 因子= 2.6

;      010  84kHz  < f 225kHz       50kHz  < f 100kHz       K 因子= 7.7

;      011  225kHz < f 590kHz 100kHz < f 200kHz K 因子= 22

;      100  590kHz < f 1.5MHz       200kHz < f 400kHz K 因子= 65

;      101  1.5MHz < f 4MHz   400kHz < f 800kHz K 因子= 180

;      110  4MHz   < f 10MHz 800kHz < f 1.6MHz       K 因子= 664

;      111  10MHz  < f 30MHz 1.6MHz < f 3.2MHz       K 因子= 1590

 

;=====================================================================

;|外部振荡器控制| OSCXCN | B1H | - |XTLVLD| XOSCMD2 | XOSCMD1 | XOSCMD0 |XFCN2 | XFCN1 | XFCN0

;------------------------------------------------------------------------------------

;             mov        OSCXCN,             #00000000B

              mov        OSCXCN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;25--B2H---OSCICN----内部振荡器控制寄存器

;复位值: 11000000

;IOSCEN:内部振荡器使能位

;      0:内部振荡器禁止。

;      1:内部振荡器使能。

;IFRDY:内部振荡器频率准备好标志

;      0:内部振荡器未运行在编程频率。

;      1:内部振荡器按编程频率运行。

; 5-2:未用。读 = 0000b,写 =  忽略。

;IFCN1-0:内部振荡器频率控制位

;      00SYSCLK 为内部振荡器 8 分频。

;      01SYSCLK 为内部振荡器 4 分频。

;      10SYSCLK 为内部振荡器 2 分频。

;      11SYSCLK 为内部振荡器输出(不分频)。

;=====================================================================

;|内部振荡器控制| OSCICN | B2H | - |IOSCEN|IFRDY | - | -  | - |  -  | IFCN1| IFCN0

;------------------------------------------------------------------------------------

;             mov        OSCICN,              #00000000B

              mov        OSCICN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;26--B3H---OSCICL----内部振荡器校准寄存器

;复位值: 可变

; 7   未用。读=0b,写 =  忽略。

;OSCICL:内部振荡器校准寄存器。

;     该寄存器决定内部振荡器的周期(根据方程 12.1)。OSCICL  的复位值定义内 部振荡器的基频。

;     对于 C8051F31x,复位值已经过工厂校准,对应的基频为24.5MHz

;=====================================================================

;|内部振荡器校准| OSCICL | B3H | - |-|   |   |    |   |    |  |   |

;------------------------------------------------------------------------------------

;             mov        OSCICL,        #00000000B

              mov        OSCICL,        #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;27--B6H---FLSCL----FLASH 定时预分频

;复位值: 10000000

;FOSEFLASH 单稳态定时器使能

;     该位用于使能 FLASH 读操作单稳态定时器。当 FLASH 单稳态定时器被禁止时,

;     FLASH  读出放大器在整个 FLASH  读周期内被使能。当系统时钟频率低于

;     10MHz 时,禁止 FLASH 单稳态定时器会增加系统功耗。

;      0:禁止 FLASH 单稳态定时器。

;      1:使能 FLASH 单稳态定时器。

; 6-0 保留。读 = 0,必须写 0

;=====================================================================

;|FLASH 定时预分频| FLSCL | B6H | - |FOSE| - | - | -  | - |  -  | - | -

;------------------------------------------------------------------------------------

;             mov        FLSCL,          #00000000B

              mov        FLSCL,          #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;28---FLKEY----B7H----FLASH 锁定和关键码寄存器

;复位值: 00000000

;FLKEYFLASH 锁定和关键码寄存器

;      写:

;      必须在写或擦除 FLASH 之前写该寄存器。FLASH 保持在锁定状态,直到该寄 存器被写入下面的关键码:0xA50xF1。写入的时序并不重要,只要按顺序写 即可。每次写或擦除 FLASH  之前都必须写关键码。如果写入了错误的关键码 或在写关键码之前进行了 FLASH 操作,则 FLASH 将被锁定,直到下一次系统 复位。

;      读:

; 1-0 指示当前的 FLASH 锁定状态

;      00FLASH /擦除被锁定。

;      01:第一个关键码已被写入(0xA5)。

;      10FLASH 处于解锁状态(允许写/擦除)

;      11FLASH /擦除操作被禁止,直到下一次复位。

;====================================================================================

;|FLASH 锁定和关键码| FLKEY |B7H | - |- | - | - | - | - |  -  | - | -

;------------------------------------------------------------------------------------

;             mov        FLKEY,         #00000000B

              mov        FLKEY,         #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;29B8H---IP----------中断优先级

;(可位寻址)

; 7-6  未用。读=1b,写=忽略。

;PT2:定时器 2 中断优先级控制 该位设置定时器 2 中断的优先级。

;      0:定时器 2 为低优先级。

;      1:定时器 2 为高优先级。

;PS0 UART0 中断优先级控制。 该位设置 UART0 中断的优先级。

;      0UART0 为低优先级。

;      1UART1 为高优先级。

;PT1:定时器 1 中断优先级控制 该位设置定时器 1 中断的优先级。

;      0:定时器 1 为低优先级。

;      1:定时器 1 为高优先级。

;PX1:外部中断 1 优先级控制 该位设置外部中断 1 的优先级。

;      0:外部中断 1 为低优先级。

;      1:外部中断 1 为高优先级。

;PT0:定时器 0 中断优先级控制 该位设置定时器 0 中断的优先级。

;      0:定时器 0 为低优先级。

;      1:定时器 0 为高优先级。

;PX0:外部中断 0 优先级控制 该位设置外部中断 0 的优先级。

;      0:外部中断 0 为低优先级。

;      1:外部中断 0 为高优先级。

;-----------------------------------------------------------------------------------

;位:7           6         5         4          3         2          1         0

;    -           -         PT2       PS0       PT1       PX1        PT0       PX0

;RST:1           1         0         0          0         0          0         0

;-----------------------------------------------------------------------------------

;             mov        IP,          #01000000B

              mov        IP,          #80h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;30--BAH---AMX0CF----AMUX0 配置寄存器

;复位值: 00000000

; 7-4:未使用。读  = 0000b;写  =  忽略

;PORT3ICP3 口偶数/奇数引脚输入对配置位

;      0: P3 口偶数和奇数输入通道为独立的单端输入

;      1: P3 口偶数和奇数输入通道为(分别为)+, -差分输入对

;HVDA2CHVDA 输出取补控制位

;      0: HVDA 为独立的单端输入测量输出

;      1: HVDA 的测量结果为 2 的补码

;AIN23ICAIN0.2AIN0.3 输入对配置位

;      0: AIN0.2 AIN0.2 为独立的单端输入

;      1: AIN0.2, AIN0.2 为(分别为)+, -差分输入对

;AIN01ICAIN0.0AIN0.1 输入对配置位

;      0: AIN0.0 AIN0.1 为独立的单端输入

;      1: AIN0.0, AIN0.1 为(分别为)+, -差分输入对

;注:对于被配置成差分输入的通道,ADC0 数据字格式为 2 的补码

;=====================================================================

;|AMUX0 配置寄存器| AMX0CF | BAH | - |-| - | - | -  | PORT3IC |  HVDA2C  | AIN23IC | AIN01IC

;------------------------------------------------------------------------------------

;             mov        AMX0CF,             #00000000B

              mov        AMX0CF,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;31--BBH---AMUX0SL----AMUX0 通道选择寄存器

;复位值: 00000000

; 7-4:未使用。读  = 0000b;写  =  忽略

;AMX0AD3-0: AMUX0 地址位

;      0000-1111b:  根据表 5.1 选择 ADC 输入

;=====================================================================

;|AMUX0 通道选择| AMUX0SL | BBH | - |-| - | - | -  | PORT3IC |  HVDA2C  | AIN23IC | AIN01IC

;------------------------------------------------------------------------------------

;             mov        AMUX0SL,           #00000000B

              mov        AMUX0SL,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;32--BCH---ADC0CF---- ADC0 配置寄存器

;复位值: 11111000

;AD0SC4-0: ADC0 SAR 转换时钟周期控制位

;      SAR 转换时钟来源于系统时钟,由下面的方程给出,其中 AD0SC 表示 AD0SC4-0

;      中保持的数值,CLKSAR0 表示所需要的 ADC0  SAR 时钟。

;AMP0GN2-0: ADC0 内部放大器增益(PGA)

;      000:  增益  = 1

;      001:  增益  = 2

;      010:  增益  = 4

;      011:  增益  = 8

;      10x:  增益  = 16

;      11x:  增益  = 0.5

;=====================================================================

;| ADC0 配置寄存器| ADC0CF | BCH | - |-| - | - | -  | PORT3IC |  HVDA2C  | AIN23IC | AIN01IC

;------------------------------------------------------------------------------------

;             mov        ADC0CF,              #00000000B

              mov        ADC0CF,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;33--BDH---AMX0PRT---- P3 口引脚选择寄存器

;复位值: 00000000

;PAIN7EN:引脚 7 模拟输入使能位

;      0P3.7 未被选择为 AMUX 的模拟输入

;      1P3.7 被选择为 AMUX 的模拟输入

;PAIN6EN:引脚 6 模拟输入使能位

;      0P3.6 未被选择为 AMUX 的模拟输入

;      1P3.6 被选择为 AMUX 的模拟输入

;PAIN5EN:引脚 5 模拟输入使能位

;      0P3.5 未被选择为 AMUX 的模拟输入

;      1P3.5 被选择为 AMUX 的模拟输入

;PAIN4EN:引脚 4 模拟输入使能位

;      0P3.4 未被选择为 AMUX 的模拟输入

;      1P3.4 被选择为 AMUX 的模拟输入

;PAIN3EN:引脚 3 模拟输入使能位

;      0P3.3 未被选择为 AMUX 的模拟输入

;      1P3.3 被选择为 AMUX 的模拟输入

;PAIN2EN:引脚 2 模拟输入使能位

;      0P3.2 未被选择为 AMUX 的模拟输入

;      1P3.2 被选择为 AMUX 的模拟输入

;PAIN1EN:引脚 1 模拟输入使能位

;      0P3.1 未被选择为 AMUX 的模拟输入

;      1P3.1 被选择为 AMUX 的模拟输入

;PAIN0EN:引脚 0 模拟输入使能位

;      0P3.0 未被选择为 AMUX 的模拟输入

;      1P3.0 被选择为 AMUX 的模拟输入

 

;注:可以有任意多个 P3 口引脚同时被选择为 AMUX 的输入。被同时选择的编号为奇数的 引脚或编号为偶数的引脚以"线或"的方式短接

;=====================================================================

;| P3 口引脚选择| AMX0PRT | BDH | - |PAIN7EN| PAIN6EN | PAIN5EN | PAIN4EN | PAIN3EN | PAIN2EN | PAIN1EN| PAIN0EN

;------------------------------------------------------------------------------------

;             mov        AMX0PRT,            #00000000B

              mov        AMX0PRT,            #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;34--C0H---SMB0CN----SMBus0 控制寄存器

;复位值: 00000000

;BUSY:忙状态标志

;      0SMBus0 空闭

;      1SMBus0

;ENSMBSMBus0 使能 该位使能/禁止 SMBus0 串行接口

;      0:禁止 SMBus0

;      1:使能 SMBus0

;STASMBus0 起始标志

;      0:不发送起始条件。

;      1:当作为主器件时,若总线空闭,则发送出一个起始条件。(如果总线不空闲, 在收到停止

;      条件后再发送起始条件。)如果 STA 被置 1,而此时已经发送或接 收了一个或多个字节并且

;      没有收到停止条件,则发送一个重复起始条件。

;STOSMBus0 停止标志

;      0:不发送停止条件。

;      1:将 STO 置为逻辑 1 将发送一个停止条件。当收到停止条件时,硬件将 STO 清为逻辑 0

;      如果 STA STO 都被置位,则发送一个停止条件后再发送一个 起始条件。在从方式,置位

;      STO 标志将导致 SMBus 的行为象收到了停止条件 一样。

;SISMBus0 串行中断标志

;      SMBus0 进入 27 种可能状态之一时该位被硬件置位。(状态码 0xF8 不使 SI 置位。)当

;      SI 中断被允许时,该位置 1 将导致 CPU 转向 SMBus 中断服务程序。 该位不能被硬件自动清 0

;      必须用软件清除。

;AASMBus0 有效确认标志,该位定义在 SCL 线应答周期内返回的应答类型。

;      0:在应答周期内返回"非确认"SDA 线高电平)。

;      1:在应答周期内返回"确认"SDA 线低电平)。

;FTESMBus0 空闭定时器使能位

;      0:无 SCL 高电平超时。

;      1:当 SCL 高电平时间超过由 SMB0CR 规定的极限值时发生超时。

;TOESMBus0 超时使能位

;      0:无 SCL 低电平超时。

;      1:当 SCL 处于低电平的时间超过由定时器 4(如果被使能)定义的极限值时 发生超时。

 

;=====================================================================

;|SMBus0 控制寄存器|SMB0CN | C0H | YE |BUSY |ENSMB | STA | STO |SI | AA | FTE | TOE

;------------------------------------------------------------------------------------

;             mov        SMB0CN,             #00000000B

              mov        SMB0CN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;35--C1H---SMB0STA----SMBus 状态寄存器

;复位值: 11111000

;STA7-STA3SMBus0 状态代码

;      这些位含有 SMBus0 状态代码。共有 28 个可能的状态码,每个状态码对应一

;      SMBus 状态。在 SI 标志(SMB0CN.3)置位时,SMB0STA 中的状态码有 效。当 SI 标志为逻辑 0 时,

;      SMB0STA 中的内容无定义。任何时候向 SMB0STA 寄存器写入将导致不确定的结果。

;STA2-STA0:当 SI 标志位为逻辑 1 时,这三个 SMB0STA 最低位的读出值总是 为逻辑 0

;=====================================================================

;|SMBus 状态寄存器|SMB0STA | C1H | - |STA7| STA6 | STA5 |STA4| STA3 |STA2 | STA1 |STA0

;------------------------------------------------------------------------------------

;             mov        SMB0STA,            #00000000B

              mov        SMB0STA,            #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;36--C2H---SMB0DAT----SMBus 数据寄存器

;复位值: 00000000

;SMB0DATSMBus 数据

; SMB0DAT 寄存器保存要发送到 SMBus 串行接口上的一个数据字节,或刚从 SMBus 串行接口接收到的一个字节

;。一旦 SI 串行中断标志被置'1'CPU 可读或写该寄存器。只要 SI  串行中断标志位为逻辑'1',该寄存

;器内的串行 数据就是稳定的。当 SI  标志位不为'1'时,系统可能正在移入/移出数据, 此时 CPU 不应访问该寄存器。

;=====================================================================

;|SMBus数据寄存器|SMB0DAT | C2H | - |-| - | - | -  | - |  -  | - |-

;------------------------------------------------------------------------------------

;             mov        SMB0DAT,            #00000000B

              mov        SMB0DAT,            #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;37--C3H---SMB0ADR----SMBus0 地址寄存器

;复位值: 00000000

;SLV6-SLV0SMBus0 从地址

;      这些位用于存放  7  位从地址,当器件工作在从发送器或从接收器方式时, SMBus0 将应答该地址。

;      SLV6 是地址的最高位,对应从 SMBus0 收到的地址 字节的第一位。

;GC:全局呼叫地址使能 该位用于使能全局呼叫地址(0x00)识别。

;      0:忽略全局呼叫地址。

;      1:识别全局呼叫地址。

;=====================================================================

;|SMBus0 地址寄存器|SMB0ADR | C3H | - |SLV6| SLV5 | SLV4 | SLV3  | SLV2 | SLV1 | SLV0 |GC

;------------------------------------------------------------------------------------

;             mov        SMB0ADR,           #00000000B

              mov        SMB0ADR,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;38--C8H---TMR2CN----定时器 2 控制寄存器

;复位值: 00000000

;TF2H:定时器 2 高字节溢出标志

;      当定时器 2 高字节发生溢出时(从 0xFF 0x00)由硬件置'1'。在 16 位方 式,当定时器

;      2 发生溢出时(从 0xFFFF 0x0000)由硬件置'1'。当定时器

;      2 中断被允许时,该位置'1'将导致 CPU 转向定时器 2 的中断服务程序。该 位不能由硬件自动

;      0,必须用软件清 0

;TF2L:定时器 2 低字节溢出标志

;      当定时器 2 低字节发生溢出时(从 0xFF 0x00)由硬件置'1'。当定时器 2 中断被允许并且

;      TF2LEN 位被设置为逻辑'1'时,该位置'1'将产生中断。 TF2L 在低字节溢出时置位,与定时器

;       2 的工作方式无关。该位不能由硬件自 动清 0,必须用软件清 0

;TF2LEN:定时器 2 低字节中断允许位

;        该位允许/禁止定时器 2 低字节中断。如果 TF2LEN 被置'1'并且定时器 2 断被允许(IE.5

;        ,则当定时器 2 低字节发生溢出时将产生一个中断。当定时器2 工作在 16 位方式时,该位应被清'0'

;      0:禁止定时器 2 低字节中断。

;      1:允许定时器 2 低字节中断。

; 4   未用。读 = 0b,写 =  忽略。

;T2SPLIT:定时器 2 8 位方式允许位

;       当该位被置'1'时,定时器 2 工作在双 8 位自动重装载定时器方式。

;      0:定时器 2 工作在 16 位自动重装载方式。

;      1:定时器 2 工作在双 8 位自动重装载定时器方式。

;TR2:定时器 2 运行控制

;     该位允许/禁止定时器 2。在 8 位方式,该位只控制 TH2TL2 总是处于运行状 态。

;      0:定时器 2 禁止。

;      1:定时器 2 允许。

; 1   未用。读 = 0b,写 =  忽略。

;T2XCLK:定时器 2 外部时钟选择

;       该位选择定时器 2 的外部时钟源。如果定时器 2 工作在 8 位方式,该位为两个

;        8  位定时器选择外部振荡器时钟源。但仍可用定时器 2  时钟选择位(CKCON中的 T2MH T2ML

;       在外部时钟和系统时钟之间作出选择。

;      0:选择定时器 2 外部时钟为系统时钟/12

;      1:选择定时器 2 外部时钟为外部时钟/8。注意,外部振荡源时钟/8 与系统时钟 同步。

 

;=====================================================================

;|定时器 2 控制| TMR2CN |  C8H | YE |TF2H | TF2L  |  TF2L | TF2LEN | -|  T2SPLIT | - | T2XCLK|

;-----------------------------------------------------------------------------------------------

;             mov        TMR2CN,             #x0000000B

              mov          TMR2CN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;39D1H---REF0CN-------电压基准控制寄存器

;复位值: 00000000

; 7-5:未用。读 = 0000b,写 =  忽略。

;AD0VRS:ADC0 电压基准选择位

;      0ADC0 电压基准取自 VREF0 引脚。

;      1ADC0 电压基准取自 DAC0 输出(仅 C8051F040/2)。

;AD2VRSADC2 电压基准选择位(仅 C8051F040/2

;      0ADC2 电压基准取自 VREF2 引脚。

;      ADC2 电压基准取自 AV+

;TEMPE:温度传感器使能位

;      0: 内部温度传感器关闭。

;      1: 内部温度传感器工作。

;BIASEADC/DAC 偏压发生器使能位(使用 ADC DAC 时该位必须为 1)

;      0: 内部偏压发生器关闭。

;      1: 内部偏压发生器工作

;REFBE:内部电压基准缓冲器使能位

;      0:内部电压基准缓冲器关闭。

;      1:内部电压基准缓冲器工作。内部电压基准输出到 VREF 引脚。

;=====================================================================

;|电压基准控制| REF0CN |  D1H | - |- |  - |  -  | AD0VRS  | AD2VRS | TEMPE | BIASE  | REFBE |

;------------------------------------------------------------------------------------

;             mov        REF0CN,              #00000000B

              mov        REF0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;40D4H---DAC0CN-------DAC0 控制寄存器

;复位值: 00000000

;DAC0ENDAC0 使能位

;      0DAC0 禁止。DAC0 输出引脚被禁止,DAC0 处于低功耗停机方式

;      1DAC0 使能。DAC0 输出有效;DAC0 处于工作状态。

; 6-5:未用。读  = 00b;写  =  忽略。

;DAC0MD1-0DAC0 方式位。

;      00DAC 输出更新发生在写 DAC0H 时。

;      01DAC 输出更新发生在定时器 3 溢出时。

;      10DAC 输出更新发生在定时器 4 溢出时。

;      11DAC 输出更新发生在定时器 2 溢出时。

;DAC0DF2-0DAC0 数据格式位:

;      000DAC0 数据字的高 4 位在 DAC0H[3:0],低字节在 DAC0L

;      001DAC0 数据字的高 5 位在 DAC0H[4:0],低 7 位在 DAC0L[7:1]

;      010DAC0 数据字的高 6 位在 DAC0H[5:0],低 6 位在 DAC0L[7:2]

;      011DAC0 数据字的高 7 位在 DAC0H[6:0],低 5 位在 DAC0L[7:3]

;      1xx:高有效字节在 DAC0H[7:0],低 4 位在 DAC0L[7:4]

;=====================================================================

;|DAC0 控制寄存器| DAC0CN|  D4H | - |DAC0 |  - |  -  | DAC0MD1 |DAC0MD0 | DAC0DF2 | DAC0DF1|DAC0DF0|

;------------------------------------------------------------------------------------

;             mov        DAC0CN,             #00000000B

              mov        DAC0CN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;41D6H---HVA0CN-------高压差分放大器控制寄存器

;复位值: 00000000

;HVDAEN:高压差分放大器(HVDA)使能位

;      0HVDA 禁止。

;      1HVDA 使能。

; 6-3   保留。

;HVGAIN3 ~ 0HVDA 增益控制位。

;      HVDA 增益控制位设置对 HVDA 差分输入信号的增益,设置值与增益的对应关 系如下表所示。

 

       ;HVGAIN3:HVGAIN0  HVDA 增益

;             0000              0.05

;             0001              0.1

;             0010              0.125

;             0011              0.2

;             0100              0.25

;             0101              0.4

;             0110              0.5

;             0111        0.8

;             1000              1.0

;             1001              1.6

;             1010              2.0

;             1011              3.2

;             1100              4.0

;             1101              6.2

;             1110        7.6

;             1111        14

 

;=====================================================================

;|高压差分放大器控制| HVA0CN |  D6H | - |- |  - |  -  | -  |  REFSL | TEMPE | BIASE  | - |

;------------------------------------------------------------------------------------

;             mov        HVA0CN,              #00000000B

              mov        HVA0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;42--D8H---PCA0CN----PCA 控制寄存器

;复位值: 00000000

;CFPCA 计数器/定时器溢出标志

;    PCA 计数器/定时器从 0xFFFF 0x0000 溢出时由硬件置位。在计数器/定时

;    器溢出(CF)中断被允许时),该位置'1'将导致 CPU 转向 PCA 中断服务程

;    序。该位不能由硬件自动清 0,必须用软件清 0

;CRPCA 计数器/定时器运行控制 该位允许/禁止 PCA 计数器/定时器。

;      0:禁止 PCA 计数器/定时器。

;      1:允许 PCA 计数器/定时器。

; 5   未用。读 = 0b,写 =  忽略。

;CCF4PCA 模块 4 捕捉/比较标志。

;      0:禁止定时器 3 低字节中断。

;      1:允许定时器 3 低字节中断。

;CCF4PCA 模块 4 捕捉/比较标志

;       在发生一次匹配或捕捉时该位由硬件置位。当 CCF4 中断被允许时,该位置'1' 将导?

;      CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0

;CCF3PCA 模块 3 捕捉/比较标志

;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF3 中断被允许时,该位置'1' 将导

;      CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0

;CCF2PCA 模块 2 捕捉/比较标志

;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF2 中断被允许时,该位置'1' 将导

;      CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0

;CCF1PCA 模块 1 捕捉/比较标志

;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF1 中断被允许时,该位置'1' 将导

;      CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0

;CCF0PCA 模块 0 捕捉/比较标志

;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF0 中断被允许时,该位置'1' 将导

;      CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0

;=====================================================================

;|PCA 控制寄存器| PCA0CN |  D8H | YE |CF | CR  |  - | CCF4 | CCF3 |  CCF2 | CCF1 | CCF0|

;-----------------------------------------------------------------------------------------------

;             mov        PCA0CN,              #x0000000B

              mov          PCA0CN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;43--D9H---PCA0MD----PCA 方式寄存器

;复位值: 01000000

;CIDLPCA 计数器/定时器空闲控制

;    设置 CPU 空闲方式下的 PCA 工作方式。

;    0:当系统控制器处于空闲方式时,PCA 继续正常工作。

;    1:当系统控制器处于空闲方式时,PCA 停止工作?

;WDTE:看门狗定时器使能位?

;    如果该位被置'1'PCA 模块 4 被用作看门狗定时器。

;      0:看门狗定时器被禁止?

;      1PCA 模块 4 被用作看门狗定时器。

;WDCLK:看门狗定时器锁定

;      该位对看门狗定时器使能位锁定/解锁。当 WDCLK  被置'1'时,在发生下一

;      次系统复位之前将不能禁止 WDT

;      0:对看门狗定时器使能位解锁。

;      1:锁定看门狗定时器使能位。

; 4   未用。读 = 0b,写 =  忽略。

;CPS2-CPS0PCA 计数器/定时器时钟选择

;       这些位选择 PCA 计数器的时钟源。

;      CPS2      CPS1      CPS0      时钟源

;      0     0     0     系统时钟的 12 分频

;      0     0     1     系统时钟的 4 分频

;      0     1     0     定时器 0 溢出

;      0     1     1     ECI 负跳变(最大速率 =  系统时钟频率/4

;      1     0     0     系统时钟

;      1     0     1     外部时钟的 8 分频

;      1     1     0     保留

;      1     1     1     保留

;ECFPCA 计数器/定时器溢出中断允许

;     该位是 PCA 计数器/定时器溢出(CF)中断的屏蔽位。  

;      0:禁止 CF 中断。

;      1:当 CFPCA0CN.7)被置位时,允许 PCA 计数器/定时器溢出的中断请求。

;注意:当 WDTE 位被置'1'时,不能改写 PCA0MD 寄存器。要改变 PCA0MD 寄存

;      器的内容,必须先禁止看门狗定时器。

;=====================================================================

;|PCA 方式寄存器| PCA0MD |  D9H | - |CIDL | WDTE |  WDCLK | - | CPS2 |  CPS1 | CPS0 | ECF|

;-----------------------------------------------------------------------------------------------

;             mov        PCA0MD,             #x0000000B

              mov          PCA0MD,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;44--D9H---PCA0CPMn----PCA 捕捉/比较寄存器

;PCA0CPMn 地址:    PCA0CPM00xDA(n=0)     PCA0CPM10xDB(n=1)

;                    PCA0CPM20xDC(n=2)     PCA0CPM30xDB(n=3)

;                    PCA0CPM40xDE(n=4)

;复位值: 00000000

;PWM16n16 位脉冲宽度调制使能

;    当脉冲宽度调制方式被使能时(PWMn = 1),该位选择 16 位方式。

;    0:选择 8 PWM

;    1:选择 16 PWM

;ECOMn:比较器功能使能

;    该位使能/禁止 PCA 模块 n 的比较器功能。

;      0:禁止

;      1:使能。

;CAPPn:正沿捕捉功能使能

;      该位使能/禁止 PCA 模块 n 的正边沿捕捉。

;      0:禁止

;      1:使能?

;CAPNn:负沿捕捉功能使能?

;      该位使能/禁止 PCA 模块 n 的负边沿捕捉。

;      0:禁止

;      1:使能?

;MATn:匹配功能使能

;      该位使能/禁止 PCA 模块 n 的匹配功能。如果被使能,当 PCA 计数器与一个模

;      的捕捉/比较寄存器匹配时,PCA0MD 寄存器中的 CCFn 位被置'1'

;      0:禁止

;      1:使能?

;TOGn:电平切换功能使能

;     该位使能/禁止 PCA 模块 n 的电平切换功能。如果被使能,当 PCA 计数器与一     

;     个模块的捕捉/比较寄存器匹配时,CEXn  引脚的逻辑电平发生切换。如果

;      PWMn 位也被置'1',模块将工作在频率输出方式。

;      0:禁止

;      1:使能?

;PWMn:脉宽调制方式使能

;      该位使能/禁止 PCA 模块 n PWM 功能。当被使能时,CEXn 引脚输出脉

;      宽度调制信号。PWM16n '0'时使用 8 PWM 方式,PWM16n

;      '1' 使用 16 位方式。如果 TOGn 位也被置为逻辑'1',则模块工作在频率

;      输出方

;      0:禁止

;      1:使能?

;ECCFn:捕捉/比较标志中断允许 该位设置捕捉/

;       比较标志(CCFn)的中断屏蔽。

;      0:禁止 CCFn 中断。

;      1:当 CCFn 位被置'1'时,允许捕捉/比较标志的中断请求。

;=====================================================================

;|PCA 捕捉/比较寄存器| PCA0CPMn |  D9H | - |PWM16n | ECOMn |  CAPPn | CAPNn | MATn |  TOGn | PWMn | ECCFn|

;-----------------------------------------------------------------------------------------------

;             mov        PCA0CPMn,          #x0000000B

              mov          PCA0CPMn,          #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;45--E1H---XBR0----端口 I/O 交叉开关寄存器 0

;复位值: 00000000

;CP0E:比较器 0 输出使能位

;      0CP0 不连到端口引脚。

;      1CP0 连到端口引脚。

;ECI0EPCA0 外部计数器输入使能位

;      0PCA0 外部计数器输入不连到端口引脚。

;      1PCA0 外部计数器输入(ECI0)连到端口引脚。

;PCA0MEPCA0 模块 I/O 使能位

;      000:所有的 PCA0 I/O 都不连到端口引脚。

;      001CEX0 连到端口引脚。

;      010CEX0CEX1 连到 2 个端口引脚。

;      011CEX0CEX1CEX2 连到 3 个端口引脚。

;      100CEX0CEX1CEX2CEX3 连到 4 个端口引脚。

;      101CEX0CEX1CEX2CEX3CEX4 连到 5 个端口引脚。

;      110CEX0CEX1CEX2CEX3CEX4CEX5 连到 6 个端口引脚。

;UART0ENUART0 I/O 使能位。

;      0UART0 I/O 不连到端口引脚。

;      1UART0 TX0 连到 P0.0RX0 连到 P0.1

;SPI0ENSPI 总线 I/O 使能位。

;      0SPI0 I/O 不连到端口引脚。

;      1SPI0 SCKMISOMOSI NSS 连到 4 个端口引脚。

;      注意:当 SPI 被设置为 3 线方式时,NSS 信号不被分配端口引脚。

;SMB0ENSMBus 总线 I/O 使能位

;      0SMBus0 I/O 不连到端口引脚。

;      1SMBus0 SDA 连到 2 个端口引脚。

;=====================================================================

;|端口I/O交叉开关寄存器 0| XBR0 | E1H | - |CP0E| ECI0E |PCA0ME| PCA0ME |PCA0ME |UART0EN |SPI0EN|SMB0EN

;------------------------------------------------------------------------------------

;             mov        XBR0,           #00000000B

              mov        XBR0,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;46--E2H---XBR1----端口 I/O 交叉开关寄存器 1

;复位值: 00000000

;SYSCKE/SYSCLK 输出使能位

;      0/SYSCLK 不连到端口引脚。

;      1/SYSCLK 连到端口引脚。

;T2EXET2EX 使能位

;      0T2EX 不连到端口引脚。

;      1T2EX 连到端口引脚。

;T2ET2 使能位

;      0T2 不连到端口引脚。

;      1T2 连到端口引脚。

;INT1E/INT1 使能位。

;      0/INT1 不连到端口引脚。

;      1/INT1 连到端口引脚。

;T1ET1 使能位

;      0T1 不连到端口引脚。

;      1T1 连到端口引脚。

;INT0E/INT0 使能位

;      0/INT0 不连到端口引脚。

;      1/INT0 连到端口引脚。

;T0ET0 使能位

;      0T0 不连到端口引脚。

;      1T0 连到端口引脚。

;CP1E:比较器 1 输出使能位

;      0CP1 不连到端口引脚。

;      1CP1 连到端口引脚。

 

;=====================================================================

;|端口I/O交叉开关寄存器 1| XBR1 | E2H | - |SYSCKE | T2EXE |T2E| INT1E |T1E |INT0E | T0E |CP1E |

;------------------------------------------------------------------------------------

;             mov        XBR1,           #00000000B

              mov        XBR1,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;47--E3H---XBR2----端口 I/O 交叉开关寄存器 2

;复位值: 00000000

;WEAKPUD:弱上拉禁止位。

;      0:弱上拉全局使能。

;      1:弱上拉全局禁止。

;XBARE:交叉开关使能位

;      0:交叉开关禁止。端口 012 3 的所有引脚被强制为输入方式。

;      1:交叉开关使能。

; 5   未用。读  = 0,写  =  忽略。

;T4EXET4EX 输入使能位

;      0T4EX 不连到端口引脚。

;      1T4EX 连到端口引脚。

;T4ET4 输入使能位

;      0T4 不连到端口引脚。

;      1T4 连到端口引脚。

;UART1EUART1 I/O 使能位

;      0UART1 I/O 不连到端口引脚。

;      1UART1 TX RX 连到两个端口引脚。

;EMIFLE:外部存储器接口低端口使能位

;      0P0.7P0.6 P0.5 的功能由交叉开关或端口锁存器决定。

;      1:如果 EMI0CF.4 ='0'(外部存储器接口为复用方式)

;      P0.7 (/WR)P0.6 (/RD) P0.5 (/ALE)被交叉开关跳过,它们的输出

;      状态由端口锁存器和外部存储器接口决定。

;      1:如果 EMI0CF.4 ='1'(外部存储器接口为非复用方式)

;      P0.7 (/WR) P0.6 (/RD)被交叉开关跳过,它们的输出状态由端口锁 存器和外部存储器接口决定。

;CNVST0EADC0 外部转换启动输入使能位

;      0CNVSTR0 不连到端口引脚。

;      1CNVSTR0 连到端口引脚。

 

;=====================================================================

;|端口 I/O 交叉开关寄存器2| XBR2 | E3H | - |CTXOUT | - |-| -| CP2E |CNVST2E |T3EXE |T3E|

;-------------------------------------------------------------------------------------

;             mov        XBR2,           #00000000B

              mov        XBR2,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;48--E4H---XBR3----端口 I/O 交叉开关寄存器 3

;复位值: 00000000

;CTXOUTCAN 发送引脚(CTX)输出方式位。

;      0CTX 引脚输出方式为漏极开路。

;      1CTX 引脚输出方式为推挽。

; 6-4       保留

;CP2ECP2 输出使能位

;      0CP2 不连到端口引脚。

;      1CP2 连到端口引脚。

;CNVST2EADC2 外部转换输入使能位(仅 C8051F040/1/2/3

;      0CNVST2 不连到端口引脚。

;      1CNVST2 连到端口引脚。

;T3EXET3EX 输入使能位

;      0T3EX 不连到端口引脚。

;      1T3EX 连到端口引脚。

;T3ET3 输入使能位

;      0T3 不连到端口引脚。

;      1T3 连到端口引脚。

;=====================================================================

;|端口 I/O 交叉开关寄存器 3| XBR3 | E4H | - |CTXOUT | - |-| -| CP2E |CNVST2E |T3EXE |T3E|

;-------------------------------------------------------------------------------------

;             mov        XBR3,           #00000000B

              mov        XBR3,           #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;49E6H---EIE1----------扩展中断允许 1

; 7   保留。读  = 0b,写  =  忽略。

;CP2IE:允许比较器 2CP2)中断。该位设置 CP2 的中断屏蔽。

;      0:禁止 CP2 中断。

;      1:允许 CP2 中断。

;CP1IE:允许比较器 1CP1)中断。 该位设置 CP1 的中断屏蔽。

;      0:禁止 CP1 中断。

;      1:允许 CP1 中断。

;CP0IE:允许比较器 0CP0)中断。 该位设置 CP0 的中断屏蔽。

;      0:禁止 CP0 中断。

;      1:允许 CP0 中断?

;EPCA0:可编程计数器阵列(PCA0)中断允许位 该位设置 PCA0 的中断屏蔽。

;      0:禁止PCA0 中断。

;      1:允许 PCA0 中断。

;EWADC0:允许 ADC0 窗口比较中断 该位设置 ADC0 窗口比较的中断屏蔽。

;      0:禁止 ADC0 窗口比较中断。

;      1:允许 ADC0 窗口比较标志的中断请求。

;ESMB0:允许 SMBus0 中断 该位设置 SMBus0 的中断屏蔽。

;      0:禁止 SMBus0 中断。

;      1:允许 SMBus0 中断。

;ESPI0:允许串行外设接口 0SPI0)中断 该位设置 SPI0 的中断屏蔽。

;      0:禁止 SPI0 中断。

;      1:允许 SPI0 中断。

;-----------------------------------------------------------------------------------

;位:7           6         5         4          3         2          1         0

;    -         CP2IE      CP1IE     CP0IE      EPCA0    EWADC0      ESMB0     ESPI0

;RST:0           0         0         0          0         0          0         0

;-----------------------------------------------------------------------------------

;             mov        EIE1,             #01000000B

              mov        EIE1,             #80h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;50E7H---EIE2----------扩展中断允许 2

; 7   保留。读  = 0b,写  =  忽略。

;ES1:允许 UART1 中断。 该位设置 UART1 的中断屏蔽。?

;      0:禁止 UART1 中断。

;      1:允许 UART1 中断。

;ECAN0:允许 CAN 控制器中断。 该位设置 CAN 控制器的中断屏蔽。

;      0:禁止 CAN 控制器中断。

;      1:允许 CAN 控制器中断。

;EADC2:允许 ADC2 转换结束中断。 该位设置 ADC2 转换结束的中断屏蔽。

;      0:禁止 ADC2 转换结束中断。?

;      1:允许 ADC2 转换结束中断。

;EWADC2:允许 ADC2 窗口比较中断。 该位设置 ADC2 窗口比较的中断屏蔽。

;      0:禁止 ADC2 窗口比较中断。

;      1:允许 ADC2 窗口比较中断。 

;ET4:允许定时器 4 中断。该位设置定时器 4 的中断屏蔽。

;      0:禁止定时器 4 中断

;      1:允许定时器 4 中断。

;EADC0:允许 ADC0 转换结束中断。该位设置 ADC0 转换结束的中断屏蔽。

;      0:禁止 ADC0 转换结束中断。

;      1:允许 ADC0 转换结束中断。

;ET3:允许定时器 3 中断。该位设置定时器 3 中断屏蔽。

;      0:禁止定时器 3 中断。

;      1:允许定时器 3 中断。

;-----------------------------------------------------------------------------------

;位:7           6         5         4          3         2          1         0

;    -         ES1      ECAN0      EADC2      EWADC2     ET4        EADC0     ET3

;RST:0           0         0         0          0         0          0         0

;-----------------------------------------------------------------------------------

;             mov        EIE1,             #01000000B

              mov        EIE1,             #80h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;51--E8H---ADC0CN----ADC0 控制寄存器

;复位值: 00000000

;AD0ENADC0 使能位

;      0ADC0 禁止。ADC0 处于低耗停机状态。

;      1ADC0 使能。ADC0 处于活动状态,并准备转换数据。

;AD0TMADC 跟踪方式位

;      0:当 ADC 被使能时,除了转换期间之外一直处于跟踪方式。

;      1:由 ADSTM1-0 定义跟踪方式。

;AD0INTADC0 转换结束中断标志

;      该标志必须用软件清'0'

;      0:从最后一次将该位清 0 后,ADC0 还没有完成一次数据转换。

;      1ADC 完成了一次数据转换。

;AD0BUSYADC0 忙标志位

;      读:

;      0ADC0 转换结束或当前没有正在进行的数据转换。AD0INT AD0BUSY 下降沿被置'1'

;      1ADC0 正在进行转换。

;      写:

;      0:无作用

;      1:若 ADSTM1-000b 则启动 ADC0 转换。

;AD0CM1-0ADC0 转换启动方式选择位。

;      如果 AD0TM = 0

;      00:每次向 AD0BUSY 1 时启动 ADC0 转换。

;      01:定时器 3 溢出启动 ADC0 转换。

;      10CNVSTR0 上升沿启动 ADC0 转换。

;      11:定时器 2 溢出启动 ADC0 转换。 如果 AD0TM = 1

;      00:向 AD0BUSY 1 时启动跟踪,持续 3 SAR 时钟,然后进行转换。

;      01:定时器 3 溢出启动跟踪,持续 3 SAR 时钟,然后进行转换。

;      10:只有当 CNVSTR0 输入为逻辑低电平时 ADC0 跟踪,在 CNVSTR0 的上升 沿开始转换。

;      11:定时器 2 溢出启动跟踪,持续 3 SAR 时钟,然后进行转换。

;AD0WINTADC0 窗口比较中断标志。

;      该位必须用软件清 0

;      0:自该标志被清除后未发生过 ADC0 窗口比较匹配。

;      1:发生了 ADC0 窗口比较匹配。

;AD0LJSTADC0 数据左对齐选择位。

;      0ADC0H:ADC0L 寄存器数据右对齐。

;      1ADC0H:ADC0L 寄存器数据左对齐。

 

;=====================================================================

;|ADC0 控制| ADC0CN| E8H | YE |AD0EN | AD0TM | AD0INT| AD0BUSY |AD0CM1 |AD0CM0 |AD0WINT |AD0LJST

;------------------------------------------------------------------------------------

;             mov        ADC0CN,             #00000000B

              mov        ADC0CN,             #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;52--EFH---RSTSRC----复位源寄存器

;复位值: 可变

; 7   未用。读 = 0,写 =  忽略。

;CNVRSEF:转换启动复位源使能和标志。

;      写:

;      0CNVSTR0 不是复位源。

;      1CNVSTR0 是复位源(低电平有效)。

;      读:

;      0:前面的复位不是来自 CNVSTR0

;      1:前面的复位来自 CNVSTR0 ?

;C0RSEF:比较器 0 复位使能和标志

;      写:

;      0:比较器 0 不是复位源。

;      1:比较器 0 是复位源(低电平有效)。

;      读:

;      0:前面的复位不是来自比较器 0

;      1:前面的复位来自比较器 0

;SWRSF:软件强制复位和标志

;     

;      0:无作用

;      1:强制产生一个内部复位。/RST 引脚不受影响。

;     

;      0:前面的复位不是来自写 SWRSF 位。

;      1:前面的复位来自写 SWRSF 位。

;WDTRSF:看门狗定时器复位标志

;      0:前面的复位不是来自 WDT 超时。

;      1:前面的复位来自 WDT 超时。

;MCDRSF:时钟丢失检测器标志

;     

;      0:时钟丢失检测器禁止。

;      1:时钟丢失检测器使能。如果检测到时钟丢失条件,则触发复位。

;     

;      0:前面的复位不是来自时钟丢失检测器超时。

;      1:前面的复位来自时钟丢失检测器超时。

;PORSF:上电复位和 VDD 监视器复位标志

;      写:如果 VDD 监视器被使能(MONEN 引脚接逻辑高电平),可以通过写该位

;      来选择 VDD 监视器为复位源。

;     

;      0:不选择 VDD 监视器为复位源。

;      1:选择 VDD 监视器为复位源。?

;      重要:在上电时,通过外部 VDD 监视器使能引脚(MONEN)来使能/禁止 VDD

;      监视器。PORSF 位并不使能或禁止 VDD 监视器电路,它只是选择 VDD

;      器为复位源。

;      发生上电复位后该位被置'1'。这可能是真正的上电复位,也可能是 VDD

;      监视器复位。无论哪一种情况,复位后数据存储器的内容都应被视为不确定。

;     

;      0:前面的复位不是来自上电或 VDD 监视器复位。

;      1:前面的复位来自上电或 VDD 监视器复位。 注:当该标志位的读出值

;      '1'时,所有其它复位标志都是不确定的。

;PINRSF:硬件引脚复位标志

;      0:无影响。

;      1:强制产生一次上电复位。/RST 引脚被驱动为低电平。

;      读:

;      0:前面的复位不是来自/RST 引脚。

;      1:前面的复位来自/RST 引脚。

;=====================================================================

;|复位源| RSTSRC| EFH | - |- | CNVRSEF | C0RSEF | SWRSF | WDTRSF | MCDRSF | PORSF |PINRSF

;------------------------------------------------------------------------------------

;             mov        RSTSRC,              #00000000B

              mov        RSTSRC,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;53--F1H---P0MDIN----端口0 输入方式寄存器

;复位值: 11111111

;P0.7 - P0.0 输入方式配置位(分别对应)

;当端口引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都 被禁止。

;      0:对应的 P0.n 引脚被配置为模拟输入。

;      1:对应的 P0.n 引脚不配置为模拟输入。

;=====================================================================

;|端口0输入方式|P0MDIN | F1H | - |-| - | - | -  | - |  -  | - |-

;------------------------------------------------------------------------------------

;             mov        P0MDIN,              #00000000B

              mov        P0MDIN,              #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;54F6H---EIP1----------扩展中断优先级 1

; 7   保留。读=0b,写=忽略。

;PCP2:比较器 2CP2)中断优先级控制 该位设置 CP2 中断的优先级。

;      0CP2 中断为低优先级。

;      1CP2 中断为高优先级。

;PCP1:比较器 1CP1)沿中断优先级控制 该位设置 CP1 中断的优先级。

;      0CP1 沿中断为低优先级。

;      1CP1 中断为高优先级。

;PCP0PCP0:比较器 0CP0)中断优先级控制 该位设置 CP0 中断的优先级。

;      0CP0 中断设置为低优先级。?

;      1CP0 中断设置为高优先级。

;PPCA0PPCA0:可编程计数器阵列(PCA0)中断优先级控制 该位设置 PCA0 中断的优先级。

;      0PCA0 中断设置为低优先级。

;      1PCA0 中断设置为高优先级。

;PWADC0ADC0 窗口比较器中断优先级控制 该位设置 ADC0 窗口中断的优先级。

;      0ADC0 窗口中断为低优先级。

;      1ADC0 窗口中断为高优先级。

;PSMB0SMBus0 中断优先级控制 该位设置 SMBus0 中断的优先级。

;      0SMBus 中断为低优先级。

;      1:MBus 中断为高优先级。

;PSPI0:串行外设接口 0 中断优先级控制 该位设置 SPI0 中断的优先级。

;      0SPI0 中断为低优先级。

;      1SPI0 中断为高优先级。

;-----------------------------------------------------------------------------------

;位:7           6         5         4          3         2          1         0

;    -         PCP2       PCP2       PCP0     PPCA0      PWADC0      PSMB0     PSPI0

;RST:0           0         0         0          0         0          0         0

;-----------------------------------------------------------------------------------

;             mov        EIP1,             #01000000B

              mov        EIP1,             #80h

 

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;55F7H---EIP2----------扩展中断优先级 2

; 7   保留。读=0b,写=忽略。

;PS1UART1 中断优先级控制 该位设置 UART1 中断的优先级。

;      0UART1 中断为低优先级

;      1UART1 中断为高优先级。

;PCAN0CAN0 中断优先级控制 该位设置 CAN0 中断的优先级。

;      0CAN0 中断为低优先级?

;      1CAN0 中断为高优先级。

;PADC2ADC2 转换结束中断优先级控制 该位设置 ADC2 转换结束中断的优先级。

;      0ADC2 转换结束中断为低优先级

;      1ADC2 转换结束中断为高优先级。

;PWADC2ADC2 窗口比较中断优先级控制 该位设置 ADC2 窗口比较中断的优先级。

;      0ADC2 窗口比较中断为低优先级

;      1ADC2 窗口比较中断为高优先级

;PT4:定时器 4 中断优先级控制该位设置定时器 4 中断的优先级。

;      0:定时器 4 中断设置为低优先级

;      1:定时器 4 中断设置为高优先级

;PADC0ADC0 转换结束中断优先级控制 该位设置 ADC 转换结束中断的优先级。

;      0ADC 转换结束中断为低优先级

;      1:ADC 转换结束中断为高优先级

;PT3:定时器 3 中断优先级控制该位设置定时器 3 中断的优先级。

;      0:定时器 3 中断为低优先级

;      1:定时器 3 中断为高优先级。

;-----------------------------------------------------------------------------------

;位:7           6         5         4          3         2          1         0

;    -         PCP2       PCP2       PCP0     PPCA0      PWADC0      PSMB0     PSPI0

;RST:0           0         0         0          0         0          0         0

;-----------------------------------------------------------------------------------

;             mov        EIP2,             #01000000B

              mov        EIP2,             #80h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;56--F8H---SPI0CN----SPI0 控制寄存器

;复位值: 00000110

;SPIFSPI0 中断标志

;      该位在数据传输结束后被硬件置为逻辑 1。如果中断被允许,置 1 该位 将会使 CPU 转到 SPI0

;      中断处理服务程序。该位不能被硬件自动清 0 必须用软件清 0

;WCOL:写冲突标志

;      该位由硬件置为逻辑 1(并产生一个 SPI0 中断),表示数据传送期间对

;      SPI0 数据寄存器进行了写操作。该位必须用软件清 0

;MODF:方式错误标志

;      当检测到主方式冲突(NSS 为低电平,MSTEN1NSSMD[1:0] = 01 时,该位由硬件置为逻辑 1

;     (并产生一个 SPI0 中断)。该位不能被硬件 自动清 0,必须用软件清 0

;RXOVRN:接收溢出标志(只适用于从方式) 当前传输的最后一位已经移入 SPI0 移位寄存器

;       ,而接收缓冲器中仍保 存着前一次传输未被读取的数据时该位由硬件置为逻辑 1(并产生一个 SPI0 中断)

;       。该位不会被硬件自动清 0,必须用软件清 0

;NSSMD1-NSSMD0:从选择方式位 选择 NSS 工作方式:

;      003 线从方式或 3 线主方式。NSS 信号不连到端口引脚。

;      014 线从方式或多主方式(默认值)。NSS 总是器件的输入。

;      1x4 线单主方式。NSS 被分配一个输出引脚并输出 NSSMD0 的值。

;TXBMT:发送缓冲器空标志

;       当新数据被写入发送缓冲器时,该位被清 0。当发送缓冲器中的数据被传送到

;       SPI 移位寄存器时,该位被置 1,表示可以向发送缓冲器写新数据。

;SPIENSPI0 使能位

;      该位使能/禁止 SPI0

;      0:禁止 SPI0

;      1:使能 SPI0

 

;=====================================================================

;|SPI0 控制寄存器|SPI0CN | F8H | - |SPIF| WCOL | MODF | RXOVRN | NSSMD1 |NSSMD0 |TXBMT |SPIEN

;------------------------------------------------------------------------------------

;             mov        SPI0CN,        #00000000B

              mov        SPI0CN,        #00h

 

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

;57--FFH---VDM0CN----VDD 监视器控制寄存器

;复位值: xxxxx111

; 7-0 WDT 控制

;      写入 0xA5 将使能并重新装载 WDT?

;      写入 0xDE 后四个系统周期内写入 0xAD,将禁止WDT

;      写入 0xFF 将锁定禁止功能。

; 4:看门狗状态位(读)

; WDTCN.[4]得到看门狗定时器的状态。

;      0WDT 处于不活动状态。

;      1WDT 处于活动状态?

; 2-0   看门狗超时间隔位?

; WDTCN.[2:0]设置看门狗的超时间隔。在写这些位时,WDTCN.7 必须被置 '0'

 

;=====================================================================

;|VDD监视器控制|VDM0CN| FFH | - |- | -| --|  --  |  --  |  --  |  -   | -

;------------------------------------------------------------------------------------

;             mov        VDM0CN,             #xxxxxx00B

              mov        VDM0CN,             #00h

分享到:

上一篇:

下一篇:基于C8051F020的DS3231

评论 (0条) 发表评论

抢沙发,第一个发表评论
验证码