📄 startup.lst
字号:
+1 211 ;
+1 212 ; SPI0CN F8H
00F8.0 +1 213 SPIEN BIT SPI0CN.0 ; SPI 0 SPI ENABLE
00F8.1 +1 214 MSTEN BIT SPI0CN.1 ; SPI 0 MASTER ENABLE
00F8.2 +1 215 SLVSEL BIT SPI0CN.2 ; SPI 0 SLAVE SELECT
00F8.3 +1 216 TXBSY BIT SPI0CN.3 ; SPI 0 TX BUSY FLAG
00F8.4 +1 217 RXOVRN BIT SPI0CN.4 ; SPI 0 RX OVERRUN FLAG
00F8.5 +1 218 MODF BIT SPI0CN.5 ; SPI 0 MODE FAULT FLAG
00F8.6 +1 219 WCOL BIT SPI0CN.6 ; SPI 0 WRITE COLLISION FLAG
00F8.7 +1 220 SPIF BIT SPI0CN.7 ; SPI 0 INTERRUPT FLAG
221
222 ;------------------------------------------------------------------------------
223 NAME ?C_STARTUP
224
------ 225 ?C_C51STARTUP SEGMENT CODE
226
------ 227 ?STACK SEGMENT IDATA
228
------ 229 RSEG ?STACK
000000 230 DS 1
231
232 EXTRN CODE (?C_START)
233 PUBLIC ?C_STARTUP
234
235 ;==========================
000000 236 CSEG AT 0
000000 237 ?C_STARTUP:
000000 020000 F 238 LJMP STARTUP1
239
240 ;-------------------------
00000B 241 org 0bh
242 EXTRN CODE (Timer0Int)
00000B 020000 E 243 LJMP Timer0Int ;Vector of TIMER0
244
245 ;------------------------
000023 246 org 23h
247 EXTRN CODE (UartInt)
000023 020000 E 248 LJMP UartInt ;Vector of UART
249 ;=========================
------ 250 RSEG ?C_C51STARTUP
251 ;-------------------------
000000 252 STARTUP1:
253 ;=========================
254 ; V8051F007 hardware init
255 ;-------------------------
256 ; Reset Source select
AX51 MACRO ASSEMBLER STARTUP 06/13/06 10:15:30 PAGE 5
257 ;- - - - - - - - - - - - -
000000 C2AF 258 clr ea ;
000002 75EF00 259 mov RSTSRC, #000h ; Reset Source Register
260
261 ;-----------------------------
262 ; Watch Dog Setup(write #FF will lock the WDT in enable state)
263 ;- - - - - - - - - - - - - - -
264 $if ProgProtect=1
mov WDTCN, #0ffh ;lock the WDT in enable state
$else
000005 75FFDE 267 mov WDTCN, #0deh ; disable watchdog timer
000008 75FFAD 268 mov WDTCN, #0adh ;(write successive DE then AD will disable WDT)
269 $endif
270 ;-----------------------------
271 ; OSC setup
272 ;- - - - - - - - - - - - - - -
273 $if ExtOsc=1
mov OSCXCN, #67h ; enable external crystal oscillator with Fosc>6.74Mhz
clr A ; wait at least 1ms at internal OSC=2Mhz
djnz acc, $ ; wait ~512us (256*4T=256*(4/2Mhz)=512us)
djnz acc, $ ; wait ~512us
osc_wait: ; poll for XTLVLD-->1
mov a, OSCXCN
jnb acc.7, osc_wait
orl OSCICN, #08h ; select external oscillator as system clock source
; orl OSCXCN, #80h ; enable missing clock detector
$else
00000B 75B100 288 mov OSCXCN, #0 ; disable external OSC and Ground the XTAL1 internally(s
ee an002.pdf)
289 $endif
290
291 ;-----------------------------
292 ; CrossBar setup
293 ;- - - - - - - - - - - - - - -
294 $if UartEnable=0
00000E 75E100 295 mov XBR0, #00h ; Disable UART's TX RX to P0.0 and P0.1
296 $else
mov XBR0, #04h ; Enable UART's TX RX to P0.0 and P0.1 for no-FingerLedM
ode
$endif
299
000011 75E200 300 mov XBR1, #00h ; XBAR1: Initial Reset Value
000014 75E3C0 301 mov XBR2, #0C0h ; Enable CrossBarCoder and enable Weak-PullUp function
302
000017 75A4FF 303 mov PRT0CF, #0FFh ; Output configuration for P0(all bit are Push-Pull)
00001A 75A5FF 304 mov PRT1CF, #0FFh
00001D 75A6FF 305 mov PRT2CF, #0FFh
000020 75A7FF 306 mov PRT3CF, #0FFh
307
308 $if FingerLedMode=1 or FingerOLedMode=1
clr PowerOnCtrl ;set the Power On
$if FingerOLedMode=1 ;for NewVersionSerialMode
clr OledPowerOnCtrl ;turn off the HighPower of Oled VCC
$endif
$endif
314
315 ;-----------------------------
316 ; Comparator setup
317 ;- - - - - - - - - - - - - - -
000023 759E00 318 mov CPT0CN, #000h ; Disable Comparator0
319
320 ;-----------------------------
AX51 MACRO ASSEMBLER STARTUP 06/13/06 10:15:30 PAGE 6
321 ; Reference Control Register Configuration
322 ;- - - - - - - - - - - - - - -
000026 75D103 323 mov REF0CN, #003h ; InternalSensorOff,EnableInternalBiase,EnableInternalRe
f
324
325 ;-----------------------------
326 ; SPI Configuration
327 ;- - - - - - - - - - - - - - -
000029 75F800 328 mov SPI0CN, #000h ; Disable SPI
00002C 759A00 329 mov SPI0CFG, #000h ; SPI Configuration Register
00002F 759D00 330 mov SPI0CKR, #000h ; SPI Clock Rate Register
331
332 ;-----------------------------
333 ; DAC Configuration
334 ;- - - - - - - - - - - - - - -
335 $if LowPwrAdDaMode=1
mov DAC0CN, #0 ; DAC0 Control Register(Disable ADC0 and Right justified
)
$else
000032 75D480 338 mov DAC0CN, #080h ; DAC0 Control Register(Enable ADC0 and Right justified)
339 $endif
000035 75D200 340 mov DAC0L, #00h ; DAC0 Low Byte Register
000038 75D300 341 mov DAC0H, #00h ; DAC0 High Byte Register
342
343 $if LowPwrAdDaMode=1
mov DAC1CN, #0 ; DAC0 Control Register(Disable ADC0 and Right justified
)
$else
00003B 75D780 346 mov DAC1CN, #080h ; DAC0 Control Register(Enable ADC0 and Right justified)
347 $endif
00003E 75D500 348 mov DAC1L, #00h ; DAC1 Low Byte Register
000041 75D600 349 mov DAC1H, #00h ; DAC1 High Byte Register
350
351 ;-----------------------------
352 ; SMBus Configuration
353 ;- - - - - - - - - - - - - - -
000044 75C000 354 mov SMB0CN, #000h ; SMBus Control Register(Disable SMBus)
000047 75C300 355 mov SMB0ADR, #000h ; SMBus Address Register
00004A 75CF00 356 mov SMB0CR, #000h ; SMBus Clock Rate Register
357
358 ;-----------------------------
359 ; PCA Configuration(Disable all PCA's)
360 ;- - - - - - - - - - - - - - -
00004D 75D900 361 mov PCA0MD, #000h ; PCA Mode Register
000050 75D800 362 mov PCA0CN, #000h ; PCA Control Register
000053 75E900 363 mov PCA0L, #000h ; PCA Counter/Timer Low Byte
000056 75F900 364 mov PCA0H, #000h ; PCA Counter/Timer High Byte
365
366 ;Module 0
000059 75DA00 367 mov PCA0CPM0, #000h ; PCA Capture/Compare Register 0
00005C 75EA00 368 mov PCA0CPL0, #000h ; PCA Counter/Timer Low Byte
00005F 75FA00 369 mov PCA0CPH0, #000h ; PCA Counter/Timer High Byte
370
371 ;Module 1
000062 75DB00 372 mov PCA0CPM1, #000h ; PCA Capture/Compare Register 1
000065 75EB00 373 mov PCA0CPL1, #000h ; PCA Counter/Timer Low Byte
000068 75FB00 374 mov PCA0CPH1, #000h ; PCA Counter/Timer High Byte
375
376 ;Module 2
00006B 75DC00 377 mov PCA0CPM2, #000h ; PCA Capture/Compare Register 2
00006E 75EC00 378 mov PCA0CPL2, #000h ; PCA Counter/Timer Low Byte
000071 75FC00 379 mov PCA0CPH2, #000h ; PCA Counter/Timer High Byte
380
381 ;Module 3
000074 75DD00 382 mov PCA0CPM3, #000h ; PCA Capture/Compare Register 3
000077 75ED00 383 mov PCA0CPL3, #000h ; PCA Counter/Timer Low Byte
AX51 MACRO ASSEMBLER STARTUP 06/13/06 10:15:30 PAGE 7
00007A 75FD00 384 mov PCA0CPH3, #000h ; PCA Counter/Timer High Byte
385
386 ;Module 4
00007D 75DE00 387 mov PCA0CPM4, #000h ; PCA Capture/Compare Register 4
000080 75EE00 388 mov PCA0CPL4, #000h ; PCA Counter/Timer Low Byte
000083 75FE00 389 mov PCA0CPH4, #000h ; PCA Counter/Timer High Byte
390
391 ;-----------------------------
392 ; ADC Configuration
393 ;- - - - - - - - - - - - - - -
000086 75BA00 394 mov AMX0CF, #0 ; AMUX Configuration Register(all input is single ended)
000089 75BB00 395 mov AMX0SL, #0 ; AMUX Channel Select Register(linear address)
396 $if ExtOsc=0
00008C 75BC20 397 mov ADC0CF, #20h ; ADC Configuraion Register(SAR=SYSCLK/2,Gain=1),1.7M/2=
0.85M
398 $else
$if FingerLedMode=1 or FingerOLedMode=1
mov ADC0CF, #040h ; ADC Configuraion Register(SAR=SYSCLK/4,Gain=1),3.6864/
4=0.9216M
$else
mov ADC0CF, #060h ; ADC Configuraion Register(SAR=SYSCLK/8,Gain=1),11.0592
/8=1.3824M
$endif
$endif
407
408 $if LowPwrAdDaMode=1
mov ADC0CN, #040h ; ADC Control Register(Disable ADC0,ADCTM=1,TarckingMode
=00)
$else
00008F 75E880 411 mov ADC0CN, #080h ; ADC Control Register(Enable ADC0,always tracking)
412 $endif
413
000092 75C700 414 mov ADC0LTH, #000h ; ADC Less-Than High Byte Register
000095 75C600 415 mov ADC0LTL, #000h ; ADC Less-Than Low Byte Register
000098 75C5FF 416 mov ADC0GTH, #0FFh ; ADC Greater-Than High Byte Register
00009B 75C4FF 417 mov ADC0GTL, #0FFh ; ADC Greater-Than Low Byte Register
418
419 ;----------------------------------------
00009E 7800 420 MOV R0,#0 ;old is #7Fh for 128B,new for 256B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -