C8051F020单片机初始化程序和编译步骤

发布者:JoyfulLife最新更新时间:2016-11-22 来源: eefocus关键字:C8051F020  单片机  初始化程序  编译步骤 手机看文章 扫描二维码
随时随地手机看文章

一、编程步骤:
1、看门狗设置  2、系统初始化 3、端口初始化 4、对应功能初始化(如:串口,定时器,I2C,SPI,PCA,DAC/ADC,中断等等) 5、功能函数或中断函数(如需要)6、包含的头

文件 7、项目说明
二、对应功能初始化要点:
1、Uart:(1)串口工作模式由SCON设定(2)定时器工作方式设定TMOD (3)波特率TH载入值设定
          (4)启动TR1  (5)时钟基准 CKCON  (6)波特率加倍设定 PCON(7)开中断使能TI
2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn
3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口允许 
 

                                                 C8051F020单片机初始化程序
; $INCLUDE (C8051F020.inc)       http://wbymcs51.blog.bokee.net/

     C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序可看着“说明”初始化。

 ORG SYS_INIT
;※▲◆●◎★☆△
;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
;■-- <1> --电源管理
; PCON        ; POWER CONTROL

;■-- <2> --系统时钟和振荡器
; OSCXCN      ; EXTERNAL OSCILLATOR CONTROL
; OSCICN      ; INTERNAL OSCILLATOR CONTROL

;■-- <3> --复位及看门狗管理
; RSTSRC      ; RESET SOURCE
; WDTCN       ; WATCHDOG TIMER CONTROL

;■-- <4> --FLASH存储器编程和安全管理
; FLSCL       ; FLASH MEMORY TIMING PRESCALER
; PSCTL       ; PROGRAM STORE R/W CONTROL
; FLACL       ; FLASH ACESS LIMIT

;■-- <5> --中断控制
; IE          ; INTERRUPT ENABLE
; EIE1        ; EXTERNAL INTERRUPT ENABLE 1
; EIE2        ; EXTERNAL INTERRUPT ENABLE 2
; IP          ; INTERRUPT PRIORITY
; EIP1        ; EXTERNAL INTERRUPT PRIORITY REGISTER 1
; EIP2        ; EXTERNAL INTERRUPT PRIORITY REGISTER 2

; P3IF        ; PORT 3 EXTERNAL INTERRUPT FLAGS

;■-- <6> --端口IO初始化及交叉开关设置
; XBR0        ; DIGITAL CROSSBAR CONFIGURATION REGISTER 0
; XBR1        ; DIGITAL CROSSBAR CONFIGURATION REGISTER 1
; XBR2        ; DIGITAL CROSSBAR CONFIGURATION REGISTER 2
; P0MDOUT     ; PORT 0 OUTPUT MODE CONFIGURATION
; P1MDOUT     ; PORT 1 OUTPUT MODE CONFIGURATION
; P2MDOUT     ; PORT 2 OUTPUT MODE CONFIGURATION
; P3MDOUT     ; PORT 3 OUTPUT MODE CONFIGURATION
; P74OUT      ; PORTS 4 - 7 OUTPUT MODE

;■-- <7> --外部RAM和片内XRAM
; EMI0CN      ; EXTERNAL MEMORY INTERFACE CONTROL
; EMI0CF      ; EXTERNAL MEMORY INTERFACE (EMIF) CONFIGURATION
; EMI0TC     ; EXTERNAL MEMORY

;■-- <8> --定时器设置
; TMOD        ; TIMER MODE
; TCON        ; TIMER CONTROL
; T2CON       ; TIMER 2 CONTROL
; T4CON       ; TIMER 4 CONTROL
; TMR3CN      ; TIMER 3 CONTROL
; TMR3RLL     ; TIMER 3 RELOAD REGISTER - LOW BYTE
; TMR3RLH     ; TIMER 3 RELOAD REGISTER - HIGH BYTE
; TMR3L       ; TIMER 3 - LOW BYTE
; TMR3H       ; TIMER 3 - HIGH BYTE


;■-- <9> --串行通讯
; SCON0       ; SERIAL PORT 0 CONTROL
; SCON1       ; SERIAL PORT 1 CONTROL
; SBUF1       ; SERAIL PORT 1 DATA
; SADDR1      ; SERAIL PORT 1 
; PCON        ; POWER CONTROL
; RCAP2L      ; TIMER 2 CAPTURE REGISTER - LOW BYTE
; RCAP2H      ; TIMER 2 CAPTURE REGISTER - HIGH BYTE
; RCAP4L      ; TIMER 4 CAPTURE REGISTER - LOW BYTE
; RCAP4H      ; TIMER 4 CAPTURE REGISTER - HIGH BYTE
; SADDR0      ; SERIAL PORT 0 SLAVE ADDRESS

;■-- <10> --可编程计数器阵列
; PCA0CN      ; PCA 0 COUNTER CONTROL
; PCA0MD      ; PCA 0 COUNTER MODE
; PCA0CPM0    ; CONTROL REGISTER FOR PCA 0 MODULE 0
; PCA0CPM1    ; CONTROL REGISTER FOR PCA 0 MODULE 1
; PCA0CPM2    ; CONTROL REGISTER FOR PCA 0 MODULE 2
; PCA0CPM3    ; CONTROL REGISTER FOR PCA 0 MODULE 3
; PCA0CPM4    ; CONTROL REGISTER FOR PCA 0 MODULE 4

;■-- <11> --SMBus通讯
; SMB0CN      ; SMBUS 0 CONTROL
; SMB0CR      ; SMBUS 0 CLOCK RATE
; SMB0STA     ; SMBUS 0 STATUS
; SMB0DAT     ; SMBUS 0 DATA 
; SMB0ADR     ; SMBUS 0 SLAVE ADDRESS

;■-- <12> --SPI总线通讯
; SPI0CKR     ; SERIAL PERIPHERAL INTERFACE 0 CLOCK RATE CONTROL
; SPI0DAT     ; SERIAL PERIPHERAL INTERFACE 0 DATA
; SPI0CFG     ; SERIAL PERIPHERAL INTERFACE 0 CONFIGURATION
; SPI0CN      ; SERIAL PERIPHERAL INTERFACE 0 CONTROL

;-- <13> --ADC转换
; AMX0CF      ; ADC 0 MUX CONFIGURATION
; AMX0SL      ; ADC 0 MUX CHANNEL SELECTION
; ADC0CF      ; ADC 0 CONFIGURATION
; ADC0CN      ; ADC 0 CONTROL
; ADC0L       ; ADC 0 DATA - LOW BYTE
; ADC0H       ; ADC 0 DATA - HIGH BYTE


; ADC1CF      ; ADC 1 ANALOG MUX CONFIGURATION
; AMX1SL      ; ADC 1 ANALOG MUX CHANNEL SELECT
; ADC1CN     ; ADC 1 CONTROL

; ADC0GTL     ; ADC 0 GREATER-THAN REGISTER - LOW BYTE
; ADC0GTH     ; ADC 0 GREATER-THAN REGISTER - HIGH BYTE
; ADC0LTL     ; ADC 0 LESS-THAN REGISTER - LOW BYTE
; ADC0LTH     ; ADC 0 LESS-THAN REGISTER - HIGH BYTE
; REF0CN      ; VOLTAGE REFERENCE 0 CONTROL

; ADC1        ; ADC 1 DATA

;■-- <14> --DAC转换

; PCA0L       ; PCA 0 TIMER - LOW BYTE
; PCA0H       ; PCA 0 TIMER - HIGH BYTE

; DAC0CN      ; DAC 0 CONTROL
; DAC1L       ; DAC 1 REGISTER - LOW BYTE
; DAC1H     ; DAC 1 REGISTER - HIGH BYTE
; DAC1CN      ; DAC 1 CONTROL

;■-- <15> --比较器设置
; CPT0CN      ; COMPARATOR 0 CONTROL
; CPT1CN      ; COMPARATOR 1 CONTROL 
; EMI0TC      ; EMIF TIMING CONTROL

;■-- <16> --时钟/电压基准设置
; CKCON       ; CLOCK CONTROL


; SADEN1      ; SERIAL PORT 1 SLAVE ADDRESS MASK
; SADEN0      ; SERIAL PORT 0 SLAVE ADDRESS MASK
; P1MDIN      ; PORT 1 INPUT MODE
; PSW         ; PROGRAM STATUS WORD
; B           ; B REGISTER
; WDTCN       ; WATCHDOG TIMER CONTROL 
;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆


;  
;====================================================================
;  function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序
;  input:  -----------------
;  output:  -----------------
;  usage:  -----------------
;====================================================================
  THS0  equ  0a8h
  TLS0  equ  09ah
;  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内部控制寄存器◆◆◆
;************************************************************************************
;|名    称| 代号 |  地址|位寻| 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启动由TR0的0/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
;▲■-- <1> --电源管理

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;87H---PCON-------电源控制寄存器
;复位值: 00000000
;位 7-2:   保留。
;STOP:停机方式选择。
; 向该位写’1’将使 CIP-51 进入停机方式。该位读出值总是为 0。
; 0:无影响
; 1:CIP-51 被强制进入掉电方式(关闭振荡器
;IDLE:空闲方式选择。向该位写’1’将使 CIP-51 进入空闲方式。该位读出值总是为 0。
; 0:无影响
; 1:CIP-51 被强制进入空闲方式。(关闭供给 CPU 的时钟信号,但定时器、中断和 
; 所有外设保持活动状态。)
;======================================================================
;|电源控制| PCON |  87H | - |- | - |  -  | -  |  - |  - | STOP | IDLE |
;------------------------------------------------------------------------------------
;  mov  PCON,  #00000000B
;  mov  PCON,  #080h

;▲■-- <2> --系统时钟和振荡器

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;B1H---OSCXCN----外部振荡器控制寄存器
;复位值: 00000000
;XTLVLD:晶体振荡器有效标志,(在 XOSCMD=11x 时有效,只读)
; 0:晶体振荡器未用或未稳定。
; 1:晶体振荡器正在运行并且工作稳定。 
;:  XOSCMD2-0:外部振荡器方式位
; 00x:外部振荡器电路关闭。
; 010:外部 CMOS 时钟方式。
; 011:外部 CMOS 时钟方式二分频。
; 100:RC 振荡器方式。
; 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,  #01100111B
  mov  OSCXCN,  #067h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;B2H---OSCICN----内部振荡器控制寄存器
;复位值: 11000000
;IOSCEN:内部振荡器使能位
; 0:内部振荡器禁止。
; 1:内部振荡器使能。
;IFRDY:内部振荡器频率准备好标志
; 0:内部振荡器未运行在编程频率。
; 1:内部振荡器按编程频率运行。 
;位 5-2:未用。读 = 0000b,写 =  忽略。
;IFCN1-0:内部振荡器频率控制位
;  00:SYSCLK 为内部振荡器 8 分频。
;  01:SYSCLK 为内部振荡器 4 分频。
;  10:SYSCLK 为内部振荡器 2 分频。
;  11:SYSCLK 为内部振荡器输出(不分频)。
;======================================================================
;|内部振荡器控制| OSCICN | B2H | - |IOSCEN|IFRDY | - | -  | - |  -  | IFCN1| IFCN0
;------------------------------------------------------------------------------------
;  mov  OSCICN,  #00001000B
  mov  OSCICN,  #08h


;▲■-- <3> --复位及看门狗管理

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;EFH---RSTSRC----复位源寄存器
;复位值: 可变
;位 7: 未用。读 = 0,写 =  忽略。
;CNVRSEF:转换启动复位源使能和标志。
; 写:
; 0:CNVSTR0 不是复位源。
; 1:CNVSTR0 是复位源(低电平有效)。 
; 读:
; 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,  #01000000B
  mov  RSTSRC,  #040h

;▲■-- <4> --FLASH存储器编程和安全管理

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;B6H---FLSCL----FLASH 定时预分频
;复位值: 10000000
;FOSE:FLASH 单稳态定时器使能
;     该位用于使能 FLASH 读操作单稳态定时器。当 FLASH 单稳态定时器被禁止时,
;     FLASH  读出放大器在整个 FLASH  读周期内被使能。当系统时钟频率低于
;     10MHz 时,禁止 FLASH 单稳态定时器会增加系统功耗。
; 0:禁止 FLASH 单稳态定时器。
; 1:使能 FLASH 单稳态定时器。
;位 6-0: 保留。读 = 0,必须写 0。
;======================================================================
;|FLASH 定时预分频| FLSCL | B6H | - |FOSE| - | - | -  | - |  -  | - | -
;------------------------------------------------------------------------------------
;  mov  FLSCL,  #00000000B
  mov  FLSCL,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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,  #00000010B
  mov  PSCTL,  #03h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;B7H---FLACL----FLASH 定时预分频
;复位值: 00000000
;位 7-0  FLACL:FLASH 访问限制
;======================================================================
;|FLACL 访问限制寄存器| FLSCL | B7H | - |- | - | - | -  | - |  -  | - | -
;------------------------------------------------------------------------------------
;  mov  FLACL,  #00000000B
  mov  FLACL,  #00h

;▲■-- <5> --中断控制

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;A8H---IE----------中断使能
;(可位寻址)
;EA:允许所有中断「梦辉市恚顾兄卸稀K剿械牡ジ鲋卸掀帘紊柚谩?
; 0:禁止所有中断源。
; 1:开放中断。每个中断由它对应的中断屏蔽设置决定。
;IEGF0:通用标志位 0。
; 该位用作软件控制的通用标志位。 ?
;ET2:定时器 2 中断允许位?
; 该位用于设置定时器 2 的中断屏蔽。
; 0:禁止定时器 2 中断。
; 1:允许 TF2L 或 TF2H 标志的中断请求。
;ES0:UART0 中断允许位。该位设置 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,  #1000 0010
  mov  IE,  #082h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E6H---EIE1----------扩展中断允许 1
;位 7: 保留。读  = 0b,写  =  忽略。
;CP2IE:允许比较器 2(CP2)中断。该位设置 CP2 的中断屏蔽。
; 0:禁止 CP2 中断。
; 1:允许 CP2 中断。
;CP1IE:允许比较器 1(CP1)中断。 该位设置 CP1 的中断屏蔽。
; 0:禁止 CP1 中断。
; 1:允许 CP1 中断。
;CP0IE:允许比较器 0(CP0)中断。 该位设置 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:允许串行外设接口 0(SPI0)中断 该位设置 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,  #00000011B
  mov  EIE1,  #03h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E7H---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  EIE2,  #01000000B
  mov  EIE2,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;B8H---IP----------中断优先级
;(可位寻址)
;位 7-6  未用。读=1b,写=忽略。
;PT2:定时器 2 中断优先级控制 该位设置定时器 2 中断的优先级。
; 0:定时器 2 为低优先级。
; 1:定时器 2 为高优先级。
;PS0: UART0 中断优先级控制。 该位设置 UART0 中断的优先级。
; 0:UART0 为低优先级。
; 1:UART1 为高优先级。
;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,  #00000000B
  mov  IP,  #00h


;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;F6H---EIP1----------扩展中断优先级 1
;位 7: 保留。读=0b,写=忽略。
;PCP2:比较器 2(CP2)中断优先级控制 该位设置 CP2 中断的优先级。
; 0:CP2 中断为低优先级。
; 1:CP2 中断为高优先级。
;PCP1:比较器 1(CP1)沿中断优先级控制 该位设置 CP1 中断的优先级。
; 0:CP1 沿中断为低优先级。
; 1:CP1 中断为高优先级。
;PCP0:PCP0:比较器 0(CP0)中断优先级控制 该位设置 CP0 中断的优先级。
; 0:CP0 中断设置为低优先级。?
; 1:CP0 中断设置为高优先级。
;PPCA0:PPCA0:可编程计数器阵列(PCA0)中断优先级控制 该位设置 PCA0 中断的优先级。
; 0:PCA0 中断设置为低优先级。
; 1:PCA0 中断设置为高优先级。
;PWADC0:ADC0 窗口比较器中断优先级控制 该位设置 ADC0 窗口中断的优先级。
; 0:ADC0 窗口中断为低优先级。
; 1:ADC0 窗口中断为高优先级。 
;PSMB0:SMBus0 中断优先级控制 该位设置 SMBus0 中断的优先级。
; 0:SMBus 中断为低优先级。
; 1:MBus 中断为高优先级。
;PSPI0:串行外设接口 0 中断优先级控制 该位设置 SPI0 中断的优先级。
; 0:SPI0 中断为低优先级。
; 1:SPI0 中断为高优先级。
;-----------------------------------------------------------------------------------
;位: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,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;F7H---EIP2----------扩展中断优先级 2
;位 7: 保留。读=0b,写=忽略。
;PS1:UART1 中断优先级控制 该位设置 UART1 中断的优先级。
; 0:UART1 中断为低优先级
; 1:UART1 中断为高优先级。
;PCAN0:CAN0 中断优先级控制 该位设置 CAN0 中断的优先级。
; 0:CAN0 中断为低优先级?
; 1:CAN0 中断为高优先级。
;PADC2:ADC2 转换结束中断优先级控制 该位设置 ADC2 转换结束中断的优先级。
; 0:ADC2 转换结束中断为低优先级
; 1:ADC2 转换结束中断为高优先级。
;PWADC2:ADC2 窗口比较中断优先级控制 该位设置 ADC2 窗口比较中断的优先级。
; 0:ADC2 窗口比较中断为低优先级
; 1:ADC2 窗口比较中断为高优先级 
;PT4:定时器 4 中断优先级控制该位设置定时器 4 中断的优先级。
; 0:定时器 4 中断设置为低优先级
; 1:定时器 4 中断设置为高优先级
;PADC0:ADC0 转换结束中断优先级控制 该位设置 ADC 转换结束中断的优先级。
; 0:ADC 转换结束中断为低优先级
; 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,  #00h

;▲■-- <6> --端口IO初始化及交叉开关设置

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E1H---XBR0----端口 I/O 交叉开关寄存器 0
;复位值: 00000000
;CP0E:比较器 0 输出使能位
; 0:CP0 不连到端口引脚。
; 1:CP0 连到端口引脚。
;ECI0E:PCA0 外部计数器输入使能位
; 0:PCA0 外部计数器输入不连到端口引脚。
; 1:PCA0 外部计数器输入(ECI0)连到端口引脚。 
;PCA0ME:PCA0 模块 I/O 使能位
; 000:所有的 PCA0 I/O 都不连到端口引脚。
; 001:CEX0 连到端口引脚。
; 010:CEX0、CEX1 连到 2 个端口引脚。
; 011:CEX0、CEX1、CEX2 连到 3 个端口引脚。
; 100:CEX0、CEX1、CEX2、CEX3 连到 4 个端口引脚。
; 101:CEX0、CEX1、CEX2、CEX3、CEX4 连到 5 个端口引脚。
; 110:CEX0、CEX1、CEX2、CEX3、CEX4、CEX5 连到 6 个端口引脚。 
;UART0EN:UART0 I/O 使能位。
; 0:UART0 I/O 不连到端口引脚。
; 1:UART0 的 TX0 连到 P0.0,RX0 连到 P0.1。 
;SPI0EN:SPI 总线 I/O 使能位。
; 0:SPI0 I/O 不连到端口引脚。
; 1:SPI0 的 SCK、MISO、MOSI 和 NSS 连到 4 个端口引脚。 
; 注意:当 SPI 被设置为 3 线方式时,NSS 信号不被分配端口引脚。
;SMB0EN:SMBus 总线 I/O 使能位
; 0:SMBus0 I/O 不连到端口引脚。
; 1:SMBus0 的 SDA 连到 2 个端口引脚。
;======================================================================
;|端口I/O交叉开关寄存器 0| XBR0 | E1H | - |CP0E| ECI0E |PCA0ME| PCA0ME |PCA0ME |UART0EN |SPI0EN|SMB0EN
;------------------------------------------------------------------------------------
;  mov  XBR0,  #00000111B
  mov  XBR0,  #07h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E2H---XBR1----端口 I/O 交叉开关寄存器 1
;复位值: 00000000
;SYSCKE:/SYSCLK 输出使能位
; 0:/SYSCLK 不连到端口引脚。
; 1:/SYSCLK 连到端口引脚。 
;T2EXE:T2EX 使能位
; 0:T2EX 不连到端口引脚。
; 1:T2EX 连到端口引脚。 
;T2E:T2 使能位
; 0:T2 不连到端口引脚。
; 1:T2 连到端口引脚。 
;INT1E:/INT1 使能位。
; 0:/INT1 不连到端口引脚。
; 1:/INT1 连到端口引脚。 
;T1E:T1 使能位
; 0:T1 不连到端口引脚。
; 1:T1 连到端口引脚。 
;INT0E:/INT0 使能位
; 0:/INT0 不连到端口引脚。
; 1:/INT0 连到端口引脚。 
;T0E:T0 使能位
; 0:T0 不连到端口引脚。
; 1:T0 连到端口引脚。
;CP1E:比较器 1 输出使能位
; 0:CP1 不连到端口引脚。
; 1:CP1 连到端口引脚。

;======================================================================
;|端口I/O交叉开关寄存器 1| XBR1 | E2H | - |SYSCKE | T2EXE |T2E| INT1E |T1E |INT0E | T0E |CP1E |
;------------------------------------------------------------------------------------
;  mov  XBR1,  #00000010B
  mov  XBR1,  #02h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E3H---XBR2----端口 I/O 交叉开关寄存器 2
;复位值: 00000000
;WEAKPUD:弱上拉禁止位。
; 0:弱上拉全局使能。
; 1:弱上拉全局禁止。
;XBARE:交叉开关使能位
; 0:交叉开关禁止。端口 0、1、2 和 3 的所有引脚被强制为输入方式。
; 1:交叉开关使能。
;位 5: 未用。读  = 0,写  =  忽略。 
;T4EXE:T4EX 输入使能位
; 0:T4EX 不连到端口引脚。
; 1:T4EX 连到端口引脚。 
;T4E:T4 输入使能位
; 0:T4 不连到端口引脚。
; 1:T4 连到端口引脚。
;UART1E:UART1 I/O 使能位
; 0:UART1 I/O 不连到端口引脚。
; 1:UART1 的 TX 和 RX 连到两个端口引脚。 
;EMIFLE:外部存储器接口低端口使能位
; 0:P0.7、P0.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)被交叉开关跳过,它们的输出状态由端口锁 存器和外部存储器接口决定。
;CNVST0E:ADC0 外部转换启动输入使能位
; 0:CNVSTR0 不连到端口引脚。
; 1:CNVSTR0 连到端口引脚。

;=======================================================================
;|端口 I/O 交叉开关寄存器2| XBR2 | E3H | - |CTXOUT | - |-| -| CP2E |CNVST2E |T3EXE |T3E|
;-------------------------------------------------------------------------------------
;  mov  XBR2,  #01000000B
  mov  XBR2,  #040h

;▲■-- <7> --外部RAM和片内XRAM

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;AFH---EMI0CN----外部存储器接口控制
;复位值: 00000000
;PGSEL[7:0]:XRAM 页选择位
;当使用 8 位的 MOVX 命令时,XRAM 页选择位提供 16 位外部数据存储器
;地 址的高字节,实际上是选择一个 256 字节的 RAM 页。
;0x00:0x0000 - 0x00FF
;0x01:0x0100 - 0x01FF
;...
;0xFE:0xFE00 - 0xFEFF
;0xFF:0xFF00 - 0xFFFF
;======================================================================
;|外部存储器接口控制|EMI0CN | A2H | - |PGSEL7| PGSEL6 | PGSEL5| PGSEL4 | PGSEL3 | PGSEL2 | PGSEL1 |PGSEL0
;------------------------------------------------------------------------------------
;  mov  EMI0CN,  #00000000B
  mov  EMI0CN,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;A3H---EMI0CF----外部存储器接口配置
;复位值: 00000011
;位 7-6:   未用。读  = 00b,写  =  忽略。
;PRTSEL:EMIF 端口选择位
; 0:EMIF 在 P0-P3。
; 1:EMIF 在 P4-P7。
;EMD2:EMIF 复用方式选择位
; 0:EMIF 工作在地址/数据复用方式。
; 1:EMIF 工作在非复用方式(独立的地址和数据引脚)?
;EMD1-0:EMIF 工作模式选择位这两位控制外部存储器接口的工作模式。
;00:只用内部存储器。MOVX 只寻址片内 XRAM。所有有效地址都指向片内 存储器空间。
;01:不带块选择的分片方式。寻址低于 4K 边界的地址时访问片内存储器,寻 址高于 
;    4K 边界的地址时访问片外存储器? 位片外 MOVX 操作使用地址高端 口锁存器的当前内容作为地址的?
;    高字节。注意:为了能访问片外存储器空间,
;    EMI0CN 必须被设置成一个不属于片内地址空间的页地址。
;10:带块选择的分片方式。寻址低于 4K 边界的地址时访问片内存储器,寻址 高于 4K 边界
;    的地址时访问片外存储器。8 位片外 MOVX操作使用 EMI0CN 的内容作为地址的高字节。 
;11:只用外部存储器。MOVX 只寻址片外 XRAM。片内 XRAM 对 CPU 为不可见。
;EALE1-0:ALE 脉冲宽度选择位(只在 EMD2 =0 时有效)
; 00:ALE 高和 ALE 低脉冲宽度  = 1 个 SYSCLK 周期。
; 01:ALE 高和 ALE 低脉冲宽度  = 2 个 SYSCLK 周期。
; 10:ALE 高和 ALE 低脉冲宽度  = 3 个 SYSCLK 周期。
; 11:ALE 高和 ALE 低脉冲宽度  = 4 个 SYSCLK 周期。
;======================================================================
;|外部存储器接口配置|EMI0CF | A3H | - |-| - | PRTSEL | EMD2  | EMD1 |  EMD0  | EALE1 |EALE0
;------------------------------------------------------------------------------------
;  mov  EMI0CF,  #00000000B
  mov  EMI0CF,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;--A1H---EMI0TC----外部存储器时序控制
;复位值: 11111111
;EAS1-0:EMIF 地址建立时间位。
;       00:地址建立时间  = 0  个 SYSCLK 周期。
; 01:地址建立时间  = 1  个 SYSCLK 周期。
; 10:地址建立时间  = 2  个 SYSCLK 周期。
; 11:地址建立时间  = 3  个 SYSCLK 周期。
;EWR3-0:EMIF /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-0:EMIF 地址保持时间位。
; 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


;▲■-- <8> --定时器设置

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓?
;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 方式 0:13 位计数器/定时器
; 0 1 方式 1:16 位计数器/定时器
; 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 方式 0:13 位计数器/定时器
; 0 1 方式 1:16 位计数器/定时器
; 1 0 方式 2:自动重装载的 8 位计数器/定时器
; 1 1 方式 3:两个 8 位计数器/定时器

;======================================================================
;|定时器方式| TMOD |  89H | - |GATE1| C/T1 | T1M1  | T1M0  | GATE0| C/T0 | T0M1  | T0M0  |
;------------------------------------------------------------------------------------
;  mov  TMOD,  #00000001B  方式1
  mov  TMOD,  #01h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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,  #00010000B
;  mov  TCON,  #010h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓?
;C8H---T2CON----定时器控制寄存器
;复位值: 00000000
;TF2:定时器 2 溢出标志
; 当定时器 2 溢出时由硬件置位。当定时器2中断被允许时,该位置1导致CPU转向定时器2
; 的中断服务程序,该位不能由硬件自动清0,必须用软件清0!?
; 当RCLK0和/或TCLK0为逻辑1时,TF2不会被置1
;EXF2:定时器 2 外部标志
; 当T2EX输入引脚的负跳变导致发生捕捉或重载并且EXEN2为逻辑1时,该位由硬件置位
; 在定时器2中断被允许时,该位置1使CPU转向定时器2的中断服务程序。该位不能硬件自动清0
;RCLK0:UART0接收时钟标志
; 选择UART0工作在方式1或3时接收时钟使用的定时器
; 0  定时器1溢出作为接收时钟
; 1  定时器2溢出作为接收时钟
;TCLK0:UART0发送时钟标志
; 选择UART0工作在方式1或3时发送时钟使用的定时器
; 0  定时器1溢出作为发送时钟
; 1  定时器2溢出作为发送时钟
;EXEN2:定时器2外部允许
; 当定时器2不是工作在波特率发生器方式时,允许T2EX上的负跳变触发捕捉方式或重载
; 0  T2EX上的负跳变被忽略
; 1   T2EX上的负跳变导致一次捕捉或重载
;TR2:定时器2运行控制
; 该位允许/禁止定时器2
; 0  定时器2禁止
; 1  定时器2允许
;C/T2:定时/ 计数功能选择
; 0  定时器功能:定时器2由T2M(CKCON.5)定义的时钟加1
; 1  计数器功能:定时器2由外部输入引脚(T2)的负跳变加1
;CP/PL2:捕捉/ 重载选择
; 该位选择定时器2为捕捉或是自动重装载方式,EXEN2必须为逻辑1才能使T2EX上的负跳变
; 能够被识别并用于触发捕捉和重载。若RCLK0或TCLK0被置位,该位将被忽略,定时器2将
; 工作在自动重装载方式
; 0  当定时器2溢出或T2EX上发生负跳变时将自动重装载(EXEN2=1)
; 1  在T2EX发生负跳变时捕捉(EXEN2=1)
;======================================================================
;|定时器控制|TCON | 88H | YE |TF2| EXF2 | RCLK0| TCLK0 | EXEN2 |  TR2  | C/T2|CP/PL2
;------------------------------------------------------------------------------------
;  mov  T2CON,  #00010000B
  mov  T2CON,  #00h


;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓?
;C8H---T2CON----定时器控制寄存器
;复位值: 00000000
;TF4: 定时器 4 溢出标志
; 当定时器 4 溢出时由硬件置位。当定时器4中断被允许时,该位置1导致CPU转向定时器2
; 的中断服务程序,该位不能由硬件自动清0,必须用软件清0!?
; 当RCLK0和/或TCLK0为逻辑1时,TF2不会被置1
;EXF4: 定时器 4 外部标志
; 当T4EX输入引脚的负跳变导致发生捕捉或重载并且EXEN4为逻辑1时,该位由硬件置位
; 在定时器4中断被允许时,该位置1使CPU转向定时器2的中断服务程序。该位不能硬件自动清0
;RCLK1:UART1接收时钟标志
; 选择UART1工作在方式1或3时接收时钟使用的定时器
; 0  定时器1溢出作为接收时钟
; 1  定时器4溢出作为接收时钟
;TCLK1:UART1发送时钟标志
; 选择UART1工作在方式1或3时发送时钟使用的定时器
; 0  定时器1溢出作为发送时钟
; 1  定时器4溢出作为发送时钟
;EXEN4:定时器4外部允许
; 当定时器2不是工作在波特率发生器方式时,允许T2EX上的负跳变触发捕捉方式或重载
; 0  T4EX上的负跳变被忽略
; 1  T4EX上的负跳变导致一次捕捉或重载
;TR4: 定时器2运行控制
; 该位允许/禁止定时器2
; 0  定时器4禁止
; 1  定时器4允许
;C/T4: 定时/ 计数功能选择
; 0  定时器功能:定时器4由T4M(CKCON.6)定义的时钟加1
; 1  计数器功能:定时器4由外部输入引脚(T4)的负跳变加1
;CP/PL4:捕捉/ 重载选择
; 该位选择定时器4为捕捉或是自动重装载方式,EXEN4必须为逻辑1才能使T4EX上的负跳变
; 能够被识别并用于触发捕捉和重载。若RCLK1或TCLK1被置位,该位将被忽略,定时器2将
; 工作在自动重装载方式
; 0  当定时器4溢出或T2EX上发生负跳变时将自动重装载(EXEN4=1)
; 1  在T4EX发生负跳变时捕捉(EXEN4=1)
;======================================================================
;|定时器控制|T2CON | C9H | YE |TF4| EXF4 | RCLK1| TCLK1 | EXEN4 |  TR4  | C/T4|CP/PL4
;------------------------------------------------------------------------------------
;  mov  T4CON,  #00010000B
  mov  T4CON,  #00h


;▲■-- <9> --串行通讯

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;98H---SCON0----UART0 控制寄存器
;复位值: 00000000
;SM00-SM10:串行口工作方式。
; 写:当被写入时,这两位按下表选择串行口工作方式:
; SM00 SM10 方式
; 0 0 方式 0:同步方式
; 0 1 方式 1:8 位 UART,可变波特率
; 1 0 方式 2:9 位 UART,固定波特率
; 1 1 方式 3:9 位 UART,可变波特率
; 读:读这两位时返回 UART0 的当前工作方式。
;SM20:多处理器通信使能位 该位的功能取决于串行口工作方式。 
; 方式0:无作用。 
; 方式 1:检查有效停止位
; 0:停止位的逻辑电平被忽略。
; 1:只有当停止位为逻辑电平 1 时 RI0 激活
; 方式 2 和方式 3:多机通信使能?
; 0:第九位的逻辑电平被忽略。
; 1:只有当第九位为逻辑 1 并且接收到的地址与 UART0 地址或广播地 址匹配时 RI0 才被置位并产生中断
;REN0:接收允许该位允许/禁止 UART0 接收。
; 0:UART0 接收禁止
; 1:UART0 接收允?
;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,  #01010000B
  mov  SCON0,  #000h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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 接收器。
; 0:UART 接收禁止。
; 1:UART 接收允许。 
;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

;▲■-- <10> --可编程计数器阵列

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;D8H---PCA0CN----PCA 控制寄存器
;复位值: 00000000
;CF:PCA 计数器/定时器溢出标志
;    当 PCA 计数器/定时器从 0xFFFF 到 0x0000 溢出时由硬件置位。在计数器/定时 
;    器溢出(CF)中断被允许时),该位置’1’将导致 CPU 转向 PCA 中断服务程 
;    序。该位不能由硬件自动清 0,必须用软件清 0。
;CR:PCA 计数器/定时器运行控制 该位允许/禁止 PCA 计数器/定时器。
; 0:禁止 PCA 计数器/定时器。
; 1:允许 PCA 计数器/定时器。
;位 5: 未用。读 = 0b,写 =  忽略。
;CCF4:PCA 模块 4 捕捉/比较标志。
; 0:禁止定时器 3 低字节中断。
; 1:允许定时器 3 低字节中断。 
;CCF4:PCA 模块 4 捕捉/比较标志
;       在发生一次匹配或捕捉时该位由硬件置位。当 CCF4 中断被允许时,该位置’1’ 将导?
; 致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0
;CCF3:PCA 模块 3 捕捉/比较标志
;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF3 中断被允许时,该位置’1’ 将导
;      致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
;CCF2:PCA 模块 2 捕捉/比较标志
;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF2 中断被允许时,该位置’1’ 将导
;      致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
;CCF1:PCA 模块 1 捕捉/比较标志
;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF1 中断被允许时,该位置’1’ 将导
;      致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
;CCF0:PCA 模块 0 捕捉/比较标志
;      在发生一次匹配或捕捉时该位由硬件置位。当 CCF0 中断被允许时,该位置’1’ 将导
;      致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件清 0。
;=================================================================================
;|PCA 控制寄存器| PCA0CN |  D8H | YE |CF | CR  |  - | CCF4 | CCF3 |  CCF2 | CCF1 | CCF0|
;-----------------------------------------------------------------------------------------------
;  mov  PCA0CN,  #x0000000B
        mov  PCA0CN,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;D9H---PCA0MD----PCA 方式寄存器
;复位值: 01000000
;CIDL:PCA 计数器/定时器空闲控制
;    设置 CPU 空闲方式下的 PCA 工作方式。
;    0:当系统控制器处于空闲方式时,PCA 继续正常工作。
;    1:当系统控制器处于空闲方式时,PCA 停止工作?
;WDTE:看门狗定时器使能位?
;    如果该位被置’1’,PCA 模块 4 被用作看门狗定时器。
; 0:看门狗定时器被禁止?
; 1:PCA 模块 4 被用作看门狗定时器。 
;WDCLK:看门狗定时器锁定
;      该位对看门狗定时器使能位锁定/解锁。当 WDCLK  被置’1’时,在发生下一
;      次系统复位之前将不能禁止 WDT。
; 0:对看门狗定时器使能位解锁。
; 1:锁定看门狗定时器使能位。 
;位 4: 未用。读 = 0b,写 =  忽略。
;CPS2-CPS0:PCA 计数器/定时器时钟选择 
;       这些位选择 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 保留
;ECF:PCA 计数器/定时器溢出中断允许
;     该位是 PCA 计数器/定时器溢出(CF)中断的屏蔽位。 
; 0:禁止 CF 中断。
; 1:当 CF(PCA0CN.7)被置位时,允许 PCA 计数器/定时器溢出的中断请求。
;注意:当 WDTE 位被置’1’时,不能改写 PCA0MD 寄存器。要改变 PCA0MD 寄存
; 器的内容,必须先禁止看门狗定时器。
;=================================================================================
;|PCA 方式寄存器| PCA0MD |  D9H | - |CIDL | WDTE |  WDCLK | - | CPS2 |  CPS1 | CPS0 | ECF|
;-----------------------------------------------------------------------------------------------
;  mov  PCA0MD,  #x0000000B
        mov  PCA0MD,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;---PCA0CPMn----PCA 捕捉/比较寄存器
;复位值: 00000000
;PWM16n ;16位脉冲宽度调制使能
; 当脉冲宽度调制方式使能时(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计数器与一个模块的捕捉/比较寄存器匹配时,PCAMD寄存器中的
; CCFn位置位
; 0:禁止
; 1:使能
;TOGn 电平切换功能使能,该位使能/ 禁止PCA模块n的电平切换功能
; 如果使能,当PCA计数器与一个模块的捕捉/比较寄存器匹配时,CEXn引脚的逻辑电平
; 切换,如果PWMn位也被置位为逻辑1,则模块工作在频率输出方式。
; 0:禁止
; 1:使能
;PWMn ;脉冲调制方式使能,该位使能/禁止PCA模块n的PWM功能
; 如果被使能,CEXn引脚输出脉冲宽度调制信号,如果PWM16n为逻辑0,则使用8位PWM方式
; 如果如果PWM16n为逻辑0,则使用16位PWM方式,如果TOGn位被置1,则模块工作在频率输出方式
; 0:禁止
; 1:使能
;ECCFn 捕捉/比较标志中断允许,该位设置捕捉/ 比较标志(CCFn)的中断屏蔽
; 0:禁止CCFn中断
; 1:当CCFn位被置1时,允许捕捉/比较标识的中断请求
;=================================================================================
;|PCA 捕捉/比较寄存器|PCA0CPMn |  D8H | YE |PWM16n |ECOMn|  CAPPn | CAPNn | MATn |  TOGn | PWMn | ECCFn|
;-----------------------------------------------------------------------------------------------
;  mov  PCA0CPMn,  #x0000000B
;        mov  PCA0CPMn,  #00h

;▲■-- <11> --SMBus通讯

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;C0H---SMB0CN----SMBus0 控制寄存器
;复位值: 00000000
;BUSY:忙状态标志
; 0:SMBus0 空闭
; 1:SMBus0 忙
;ENSMB:SMBus0 使能 该位使能/禁止 SMBus0 串行接口
; 0:禁止 SMBus0
; 1:使能 SMBus0
;STA:SMBus0 起始标志
; 0:不发送起始条件。
; 1:当作为主器件时,若总线空闭,则发送出一个起始条件。(如果总线不空闲, 在收到停止
; 条件后再发送起始条件。)如果 STA 被置 1,而此时已经发送或接 收了一个或多个字节并且
; 没有收到停止条件,则发送一个重复起始条件。
;STO:SMBus0 停止标志
; 0:不发送停止条件。
; 1:将 STO 置为逻辑 1 将发送一个停止条件。当收到停止条件时,硬件将 STO 清为逻辑 0。
; 如果 STA 和 STO 都被置位,则发送一个停止条件后再发送一个 起始条件。在从方式,置位 
; STO 标志将导致 SMBus 的行为象收到了停止条件 一样。
;SI:SMBus0 串行中断标志
; 当 SMBus0 进入 27 种可能状态之一时该位被硬件置位。(状态码 0xF8 不使 SI 置位。)当 
; SI 中断被允许时,该位置 1 将导致 CPU 转向 SMBus 中断服务程序。 该位不能被硬件自动清 0,
; 必须用软件清除。
;AA:SMBus0 有效确认标志,该位定义在 SCL 线应答周期内返回的应答类型。
; 0:在应答周期内返回"非确认"(SDA 线高电平)。
; 1:在应答周期内返回"确认"(SDA 线低电平)。 
;FTE:SMBus0 空闭定时器使能位
; 0:无 SCL 高电平超时。
; 1:当 SCL 高电平时间超过由 SMB0CR 规定的极限值时发生超时。 
;TOE:SMBus0 超时使能位
; 0:无 SCL 低电平超时。
; 1:当 SCL 处于低电平的时间超过由定时器 4(如果被使能)定义的极限值时 发生超时。

;======================================================================
;|SMBus0 控制寄存器|SMB0CN | C0H | YE |BUSY |ENSMB | STA | STO |SI | AA | FTE | TOE
;------------------------------------------------------------------------------------
;  mov  SMB0CN,  #01000100B
;  mov  SMB0CN,  #44h
  mov  SMB0CN,  #46h

;======================================================================
;|SMBus0 时钟速率寄存器|SMB0CR | - | - |- |- | - | - |- | - | -| -
;------------------------------------------------------------------------------------
;  mov  SMB0CR,  #00000000B
  mov  SMB0CR,  #0c9h ;设置时钟速率=100Khz,系统时钟为11.0592MHz

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;C1H---SMB0STA----SMBus 状态寄存器
;复位值: 11111000
;STA7-STA3:SMBus0 状态代码
; 这些位含有 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

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;C2H---SMB0DAT----SMBus 数据寄存器
;复位值: 00000000
;SMB0DAT:SMBus 数据
; SMB0DAT 寄存器保存要发送到 SMBus 串行接口上的一个数据字节,或刚从 SMBus 串行接口接收到的一个字节
;。一旦 SI 串行中断标志被置’1’,CPU 即 可读或写该寄存器。只要 SI  串行中断标志位为逻辑’1’,该寄存
;器内的串行 数据就是稳定的。当 SI  标志位不为’1’时,系统可能正在移入/移出数据, 此时 CPU 不应访问该寄存器。
;======================================================================
;|SMBus数据寄存器|SMB0DAT | C2H | - |-| - | - | -  | - |  -  | - |-
;------------------------------------------------------------------------------------
;  mov  SMB0DAT,  #00000000B
;  mov  SMB0DAT,  #00h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;C3H---SMB0ADR----SMBus0 地址寄存器
;复位值: 00000000
;SLV6-SLV0:SMBus0 从地址
; 这些位用于存放  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


;▲■-- <12> --SPI总线通讯

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;9DH---SPI0CKR----SPI0 时钟速率寄存器
;复位值: 00000000
;SCR7-SCR0:SPI0 时钟频率设置位。
; 当 SPI0 模块被配置为工作于主方式时,这些位决定 SCK 输出的频率。SCK 时 钟频率是从
; 系统时; 钟分频得到的,由下面的方程给出,其中:SYSCLK 是系统 时钟频率,SPI0CKR 是
; SPI0CKR 寄存器中的 8 位值。
;======================================================================
;|SPI0 时钟速率寄存器| SPI0CKR | 9DH | - |SCR7 | SCR6 |SCR5|SCR4| SCR3 | SCR2  | SCR1 |SCR0
;------------------------------------------------------------------------------------
;  mov  SPI0CKR,  #00000000B
  mov  SPI0CKR,  #37h ;系统时钟11.0592

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;9AH---SPI0CFG----SPI0 配置寄存器
;复位值: 00000111
;CKPHA:SPI0 时钟相位。;该位控制 SPI0 时钟的相位。
; 0:在 SCK 周期的第一个边沿采样数据。?
; 1:在 SCK 周期的第二个边沿采样数据。?
;CKPOL:SPI0 时钟极性 该位控制 SPI0 时钟的极性。
; 0:SCK 在空闲状态时处于低电平。
; 1:SCK 在空闲状态时处于高电平。
;BC2-BC0:SPI0 位计数指示发送到SPI字的哪一位 
;SPIFRS2-0:SPI0 帧长度 这三位决定在主方式数据传输期间SPI移位寄存器移入/移出的位数
;=================================================================================
;|SPI0 配置寄存器| CPT1CN | 9AH | - |CKPHA| CKPOL |BC2|BC1|BC0|SPIFRS2 |SPIFRS1|SPIFRS0|
;-----------------------------------------------------------------------------------------------
;  mov  SPI0CFG,  #11000111B
        mov  SPI0CFG,  #0c7h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;F8H---SPI0CN----SPI0 控制寄存器
;复位值: 00000110
;SPIF:SPI0 中断标志
;      该位在数据传输结束后被硬件置为逻辑 1。如果中断被允许,置 1 该位 将会使 CPU 转到 SPI0
;      中断处理服务程序。该位不能被硬件自动清 0, 必须用软件清 0。
;WCOL:写冲突标志
;      该位由硬件置为逻辑 1(并产生一个 SPI0 中断),表示数据传送期间对
;      SPI0 数据寄存器进行了写操作。该位必须用软件清 0。 
;MODF:方式错误标志
;      当检测到主方式冲突(NSS 为低电平,MSTEN=1,NSSMD[1:0] = 01) 时,该位由硬件置为逻辑 1
;     (并产生一个 SPI0 中断)。该位不能被硬件 自动清 0,必须用软件清 0。
;RXOVRN:接收溢出标志(只适用于从方式) 当前传输的最后一位已经移入 SPI0 移位寄存器
;       ,而接收缓冲器中仍保 存着前一次传输未被读取的数据时该位由硬件置为逻辑 1(并产生一个 SPI0 中断)
;       。该位不会被硬件自动清 0,必须用软件清 0。
;TXBSY:发送忙标志。当一个主方式传输正在进行时,该位被硬件置1,在传输结束后由硬件清0.
;  它在NSS变为高电平时清0(从方式被禁止)
;SLVSEL:从选择标志。该位在NSS引脚为低电平时置1,说明它被允许为从方式,
;  它在NSS变为高电平时清0(从方式被禁止)
;MSTEN:主方式使能位
; 0:禁止主方式,已从方式操作
; 1:使能主方式,以主方式操作
;SPIEN:SPI0 使能位
;      该位使能/禁止 SPI0。
; 0:禁止 SPI0
; 1:使能 SPI0

;======================================================================
;|SPI0 控制寄存器|SPI0CN | F8H | - |SPIF| WCOL | MODF | RXOVRN | TXBSY |SLVSEL |MSTEN |SPIEN
;------------------------------------------------------------------------------------
;  mov  SPI0CN,  #00000011B
  mov  SPI0CN,  #03h

;▲■-- <13> --ADC转换

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;BAH---AMX0CF----AMUX0 配置寄存器
;复位值: 00000000
;位 7-4:未使用。读  = 0000b;写  =  忽略
;PORT3IC:P3 口偶数/奇数引脚输入对配置位
; 0: P3 口偶数和奇数输入通道为独立的单端输入
; 1: P3 口偶数和奇数输入通道为(分别为)+, -差分输入对 
;HVDA2C:HVDA 输出取补控制位
; 0: HVDA 为独立的单端输入测量输出
; 1: HVDA 的测量结果为 2 的补码
;AIN23IC:AIN0.2、AIN0.3 输入对配置位
; 0: AIN0.2 和 AIN0.2 为独立的单端输入
; 1: AIN0.2, AIN0.2 为(分别为)+, -差分输入对 
;AIN01IC:AIN0.0、AIN0.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

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;E8H---ADC0CN----ADC0 控制寄存器
;复位值: 00000000
;AD0EN:ADC0 使能位
; 0:ADC0 禁止。ADC0 处于低耗停机状态。
; 1:ADC0 使能。ADC0 处于活动状态,并准备转换数据。
;AD0TM:ADC 跟踪方式位
; 0:当 ADC 被使能时,除了转换期间之外一直处于跟踪方式。
; 1:由 ADSTM1-0 定义跟踪方式。 
;AD0INT:ADC0 转换结束中断标志
; 该标志必须用软件清’0’。
; 0:从最后一次将该位清 0 后,ADC0 还没有完成一次数据转换。
; 1:ADC 完成了一次数据转换。 
;AD0BUSY:ADC0 忙标志位
; 读:
; 0:ADC0 转换结束或当前没有正在进行的数据转换。AD0INT 在 AD0BUSY 的 下降沿被置’1’。
; 1:ADC0 正在进行转换。 
; 写:
; 0:无作用
; 1:若 ADSTM1-0=00b 则启动 ADC0 转换。 
;AD0CM1-0:ADC0 转换启动方式选择位。
; 如果 AD0TM = 0:
; 00:每次向 AD0BUSY 写 1 时启动 ADC0 转换。
; 01:定时器 3 溢出启动 ADC0 转换。
; 10:CNVSTR0 上升沿启动 ADC0 转换。
; 11:定时器 2 溢出启动 ADC0 转换。 如果 AD0TM = 1:
; 00:向 AD0BUSY 写 1 时启动跟踪,持续 3 个 SAR 时钟,然后进行转换。
; 01:定时器 3 溢出启动跟踪,持续 3 个 SAR 时钟,然后进行转换。
; 10:只有当 CNVSTR0 输入为逻辑低电平时 ADC0 跟踪,在 CNVSTR0 的上升 沿开始转换。
; 11:定时器 2 溢出启动跟踪,持续 3 个 SAR 时钟,然后进行转换。 
;AD0WINT:ADC0 窗口比较中断标志。
; 该位必须用软件清 0。
; 0:自该标志被清除后未发生过 ADC0 窗口比较匹配。
; 1:发生了 ADC0 窗口比较匹配。
;AD0LJST:ADC0 数据左对齐选择位。
; 0:ADC0H:ADC0L 寄存器数据右对齐。
; 1:ADC0H:ADC0L 寄存器数据左对齐。

;======================================================================
;|ADC0 控制| ADC0CN| E8H | YE |AD0EN | AD0TM | AD0INT| AD0BUSY |AD0CM1 |AD0CM0 |AD0WINT |AD0LJST
;------------------------------------------------------------------------------------
;  mov  ADC0CN,  #00000000B
  mov  ADC0CN,  #00h


;▲■-- <14> --DAC转换

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;D4H---DAC0CN-------DAC0 控制寄存器
;复位值: 00000000
;DAC0EN:DAC0 使能位
; 0:DAC0 禁止。DAC0 输出引脚被禁止,DAC0 处于低功耗停机方式
; 1:DAC0 使能。DAC0 输出有效;DAC0 处于工作状态。 
;位 6-5:未用。读  = 00b;写  =  忽略。
;DAC0MD1-0:DAC0 方式位。
; 00:DAC 输出更新发生在写 DAC0H 时。
; 01:DAC 输出更新发生在定时器 3 溢出时。
; 10:DAC 输出更新发生在定时器 4 溢出时。
; 11:DAC 输出更新发生在定时器 2 溢出时。 
;DAC0DF2-0:DAC0 数据格式位:
; 000:DAC0 数据字的高 4 位在 DAC0H[3:0],低字节在 DAC0L 中
; 001:DAC0 数据字的高 5 位在 DAC0H[4:0],低 7 位在 DAC0L[7:1]
; 010:DAC0 数据字的高 6 位在 DAC0H[5:0],低 6 位在 DAC0L[7:2]。
; 011:DAC0 数据字的高 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

;▲■-- <15> --比较器设置

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;9FH---CPT0CN----比较器 1 控制寄存器
;复位值: 00000000
;CP1EN:比较器 1 使能位
; 0:比较器 0 禁止。
; 1:比较器 0 使能。
;CP1OUT:比较器 1 输出状态标志
; 0:电压值 CP0+ < CP0-。
; 1:电压值 CP0+ > CP0-。
;CP1RIF:比较器 1 上升沿中断标志
; 0:自该标志位被清除后,没有发生过比较器 0 上升沿中断。
; 1:自该标志位被清除后,发生了比较器 0 上升沿中断
;CP1FIF:比较器 1 下降沿中断标志
; 0:自该标志位被清除后,没有发生过比较器 0 下降沿中断。
; 1:自该标志位被清除后,发生了比较器 0 下降沿中断
;CP1HYP1-0:比较器 1 正向回差电压控制位
; 00:禁止正向回差电压。
; 01:正向回差电压= 5mV。
; 10:正向回差电压= 10mV。
; 11:正向回差电压= 20mV。
;CP1HYN1-0:比较器 1 负向回差电压控制位
; 00:禁止负向回差电压。
; 01:负向回差电压= 5mV。
; 10:负向回差电压= 10mV。
; 11:负向回差电压= 20mV。
;======================================================================
;|比较器0控制|CPT1CN|  9FH | - |CP1EN |CP1OUT |CP1RIF|CP1FIF|CP1HYP1|CP1HYP0|CP1HYN1|CP1HYN0
;------------------------------------------------------------------------------------
;  mov  CPT1CN,  #00000000B
  mov  CPT1CN,  #00h

;▲■-- <16> --时钟/电压基准设置

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;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 | - |T4M | T2M  |  T1M | T0M |  - |  - | - |
;-----------------------------------------------------------------------------------------------
;  mov  CKCON,  #x0001000B
        mov  CKCON,  #08h

;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
;D1H---REF0CN-------电压基准控制寄存器
;复位值: 00000000
;位 7-5:未用。读 = 0000b,写 =  忽略。
;AD0VRS:ADC0 电压基准选择位
; 0:ADC0 电压基准取自 VREF0 引脚。
; 1:ADC0 电压基准取自 DAC0 输出(仅 C8051F040/2)。
;AD2VRS:ADC2 电压基准选择位(仅 C8051F040/2)
; 0:ADC2 电压基准取自 VREF2 引脚。
; ADC2 电压基准取自 AV+。
;TEMPE:温度传感器使能位
; 0: 内部温度传感器关闭。
; 1: 内部温度传感器工作。
;BIASE:ADC/DAC 偏压发生器使能位(使用 ADC 和 DAC 时该位必须为 1)
; 0: 内部偏压发生器关闭。
; 1: 内部偏压发生器工作
;REFBE:内部电压基准缓冲器使能位
; 0:内部电压基准缓冲器关闭。
; 1:内部电压基准缓冲器工作。内部电压基准输出到 VREF 引脚。
;======================================================================
;|电压基准控制| REF0CN |  D1H | - |- |  - |  -  | AD0VRS  | AD2VRS | TEMPE | BIASE  | REFBE |
;------------------------------------------------------------------------------------
;  mov  REF0CN,  #00000000B
  mov  REF0CN,  #00h

  setb tr0  
  ret


关键字:C8051F020  单片机  初始化程序  编译步骤 引用地址:C8051F020单片机初始化程序和编译步骤

上一篇:Keil C51 Startup.a51我的理解
下一篇:Keli C51学习

推荐阅读最新更新时间:2024-03-16 15:21

基于AT89C51单片机和DDS器件实现频率特征测试仪的设计
1、 引 言 频率特性是一个系统(或元件)对不同频率正弦输入信号的响应特性。如图1所示,被测系统输入幅值为Ar、角频率为ω的正弦信号,如果该系统是线性的,则其稳态输出也是正弦信号,频率ω不变,幅值为Ac,相角差为φ。改变ω可以得到一系列输入和输出数据。输出对输入的幅值比A(ω)=Ac/Ar与ω的关系曲线称为该系统的幅频特性,通常取20 lg A(ω)称为对数幅频特性。输出对输入的相角差φ(ω)与ω的关系曲线称为该系统的相频特性。幅频特性和相频特性综合称为频率特性,常用的是系统的开环频率特性即波特图。 一个系统的频率特征可通过频率特征测试仪来测定。频率特性测试仪也称扫频仪,用于测试被测网络的幅频特性。他可以测量被测网络的谐振频
[单片机]
基于AT89C51<font color='red'>单片机</font>和DDS器件实现频率特征测试仪的设计
手动或自动操作的双向可控硅测试仪
  双向可控硅是双向交流开关,可以在最高600V电压下控制高达25A rms电流的负载。它们用于电机速度、加热器和白炽灯的控制。逻辑型双向可控硅对 微控制器 驱动器件尤有吸引力。微控制器输出端口可以直接驱动一只双向可控硅,因为可控硅的触发电流只有3~10mA。与所有电子器件一样,双向可控硅也存在一些内部问题,在将其用于某个设计以前可以检测这些问题。 图1, 双向可控硅测试仪 用一只开关转换测试信号的极性。   图1是一个简单而成本低廉的测试设备,它可测试Littelfuse公司的L2004F31、L2004F61、L2004L1和L4004V6TP双向可控硅,也可以用于测试任何其它的引线式双向可控硅,因为所有标准封装(
[测试测量]
手动或自动操作的双向可控硅测试仪
串口通信的单片机程序
beep bit p3.7 ;蜂鸣器定义 org 00h jmp main org 23h ;串行中断入口地址 jmp com_int ;串行中断服务程序 ;*********** 主程序开始 ******************* org 30h main: mov sp,#30h ;设置堆栈 lcall rest ;初始化 lcall comm ;串口初始化 jmp $ ;原地等待 ; ************* 初始化 **
[单片机]
基于PIC16F877多路巡检控制仪的研制
1 多路巡检控制仪的硬件设计   硬件电路包括CPU、按键、LED显示器、发光二极管、A/D、D/A、增益可调放大电路、译码电路、RS-232、继电器控制电路、电源等,见图1。   电路的工作原理:仪表上电进入16路信号巡回检测状态,同时将检测的结果经过计算送入显示,并经过D/A转换送入模拟信号输出端;当某路信号与设定报警限比较超差时,使输出控制继电器动作;当有按键按下时,产生中断信号通知CPU进入参数设定状态;当PC机通过串行口给多路巡检控制仪发送通讯命令时, 产生中断信号,通知CPU进入解码状态,判断上位机传送的信息,进入不同的通讯程序;在执行完参数设定程序或通讯程序后进入16路信号巡回检测状态。在仪表运行过程中,看门狗一直监
[单片机]
基于PIC16F877多路巡检控制仪的研制
采用LMV1090放大器和AT89C51单片机改进型噪声抑制话音采集方案
机载超短波电台在战斗机中承担着与地面塔台及友机之间的通话任务,其通话质量的高低直接影响飞行员的作战与训练质量。目前在飞机上大量使用的还是老式的模拟话音电台,此种电台缺少语音增强装置,对于战斗机座舱内强烈的噪声缺少针对性的抑制措施。随着新阶段飞行任务的增大,低清晰度的通话质量势必会对飞行任务的完成及飞行员的身心健康造成较大的影响。本文拟通过新型的模拟语音处理方法,重新设计话音采集及控制部分,提高采集语音的信噪比,改善机载超短波电台的通信质量。 1、 机载电台话音采集装置 某型飞机超短波电台由控制器、收发机、功率附加器、射频转换器及通信天线构成。该电台的话音采集装置主要包括麦克风和控制器,其中控制器通过座椅连接器与飞行帽上的耳机及
[单片机]
采用LMV1090放大器和AT89C51<font color='red'>单片机</font>改进型噪声抑制话音采集方案
干簧管计数器中单片机中断的设计实现
  在本实验中,要设计一个干簧管计数器,并用数码管来显示。在本例中,还要接触单片机一个重要的功能“中断”。   干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。下图是它的结构示意图。   平时,玻璃管中的两个由特殊材料制成的簧片是分开的。   当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。因此,作为一种利用磁场信号来控制的线路开关器件,干簧管可以作
[单片机]
干簧管计数器中<font color='red'>单片机</font>中断的设计实现
一种基于AVR单片机的工频干扰滤除快速算法
摘要:提出了一种利用数字滤波器滤除工频干扰的快速算法。这种算法从AVR单片机内部硬件乘法器的特点出发,采用分配系统数法进行低通数字滤波器设计。经过VMLAB集成开发环境的仿真验证,算法速度快、代码效率高、滤波效果理想。 关键词:单片机 定点小数 FIR 工频干扰 分配系数法 VMLAB 工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求
[应用]
基于MSP430单片机的智能网络水表抄表系统设计
  随着电子通信与计算机网络技术的发展,远程抄表技术在水、电和煤气计量方面得以推广应用。为适应这个发展方向,在研制出有线远传水表及其数据采集器的基础上,开发了专用的数据集中器,以实现远传水表抄表系统。该系统有三层网络结构:上位机管理系统、集中器和智能网络水表。智能网络水表通过RS-485总线和集中器连接,集中器通过调制解调器MODEM和电话网连接进行远程通讯,将数据通过电话网传输给上位机管理系统,在降低成本的同时提高了数据传输的可靠性。该系统具有良好的伸缩性,同时,上位机管理系统也可以和银行联网,组成四级网络,为后续功能扩展奠定了基础。   1 智能网络水表   智能网络水表的工作原理是在普通转盘计数的水表中加装干簧管和永磁铁
[单片机]
基于MSP430<font color='red'>单片机</font>的智能网络水表抄表系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved