|
技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
Keil編譯ASM文件出錯 |
作者:Volitation 欄目:單片機 |
單片機為ADI公司的ADUC831,在編譯ADI公司自帶的ASM文件時,Keil不能編譯。 ASM文件內容: ;******************************************************************** ; ; Author : ADI - Apps www.analog.com/MicroConverter ; ; Date : 31 Jan 2002 ; ; File : ADCcont.asm ; ; HARDWARE : ADUC831 ; ; DESCRIPTION : Performs ADC conversions in continuous mode at a ; rate of 81.31KSPS (assuming an 11.0592MHZ Mclk). ; Outputs ADC results on P0 & P2. Continuously ; flashes LED (independently of ADC routine) at ; approximately 5Hz. ; All rate calculations assume an 11.0592MHZ Mclk. ; ;******************************************************************** $MOD831 ; Use 8052&ADUC831 predefined symbols LED EQU P3.4 ; P3.4 drives red LED on EVAL board CHAN EQU 0 ; convert this ADC input channel.. ; ;____________________________________________________________________ ; BEGINNING OF CODE CSEG ORG 0000h JMP MAIN ; jump to main program ;____________________________________________________________________ ; INTERRUPT VECTOR SPACE ORG 0033H ; (ADC ISR) MOV P0,ADCDATAL ; ADC result low byte to Port0 MOV P2,ADCDATAH ; high nibble and channel ID to Port2 RETI ;==================================================================== ; MAIN PROGRAM ORG 004Bh MAIN: ; PRECONFIGURE... MOV ADCCON1,#0B0h ; POWER up ADC, 12.3us conv+acq time MOV ADCCON2,#CHAN ; SELECT channel to convert ; LAUNCH CONTINUOUS CONVERSIONS... SETB EA ; enable interrupts SETB EADC ; enable ADC interrupt SETB CCONV ; begin continuous conversions ; CONTINUE WITH OTHER CODE... AGAIN: CPL LED ; blink (complement) the LED CALL DELAY ; delay 100MS JMP AGAIN ; repeat ; the MICRO is free to continue with other tasks (flashing the LED in ; this case) while the ADC is continuously converting, and results ; are being handled by the ADC interrupt service routine. ;____________________________________________________________________ ; SUBROUTINE DELAY: ; delay 100MS MOV R7,#200 ; 200 * 500us = 100MS DLY1: MOV R6,#229 ; 229 * 2.17us = 500us DJNZ R6,$ ; sit here for 500us DJNZ R7,DLY1 ; repeat 200 times (100MS total) RET ;____________________________________________________________________ END 用keil編譯后,出現不能編譯提示: Build target 'Target 1' assembling ADCcont.asm... ADCcont.asm(20): error A68: UNKNOWN CONTROL OR BAD ARGUMENT(S) ADCcont.asm(36): error A45: UNDEFINED SYMBOL (PASS-2) ADCcont.asm(37): error A45: UNDEFINED SYMBOL (PASS-2) ADCcont.asm(48): error A45: UNDEFINED SYMBOL (PASS-2) ADCcont.asm(49): error A45: UNDEFINED SYMBOL (PASS-2) ADCcont.asm(54): error A45: UNDEFINED SYMBOL (PASS-2) ADCcont.asm(55): error A45: UNDEFINED SYMBOL (PASS-2) Target not created 是缺少什么文件嗎? |
2樓: | >>參與討論 |
作者: 被磁化的鐵 于 2006/12/22 16:11:00 發(fā)布:
* 好幾個符號沒有定義. |
3樓: | >>參與討論 |
作者: Volitation 于 2006/12/22 16:26:00 發(fā)布:
??? 這是MOD831文件中的內容: ;REV. 1.1 31 October 2002 ;ADUC831 Apps, ANALOG Devices Inc. P0 DATA 080H ;PORT 0 SP DATA 081H ;STACK POINTER DPL DATA 082H ;DATA POINTER - LOW BYTE DPH DATA 083H ;DATA POINTER - HIGH BYTE DPP DATA 084H ;DATA POINTER - PAGE BYTE PCON DATA 087H ;POWER CONTROL TCON DATA 088H ;TIMER CONTROL TMOD DATA 089H ;TIMER MODE TL0 DATA 08AH ;TIMER 0 - LOW BYTE TL1 DATA 08BH ;TIMER 1 - LOW BYTE TH0 DATA 08CH ;TIMER 0 - HIGH BYTE TH1 DATA 08DH ;TIMER 1 - HIGH BYTE P1 DATA 090H ;PORT 1 SCON DATA 098H ;SERIAL PORT CONTROL SBUF DATA 099H ;SERIAL PORT BUFFER I2CDAT DATA 09AH ;I2C DATA REGISTER I2CADD DATA 09BH ;I2C ADDRESS REGISTER T3CON DATA 09EH ;TIMER 3 CONTROL T3FD DATA 09DH ;TIMER 3 FRACTIONAL DIVIDER P2 DATA 0A0H ;PORT 2 TIMECON DATA 0A1H ;TIC CONTROL HTHSEC DATA 0A2H ;TIC - HTHSEC DATA SEC DATA 0A3H ;TIC - SEC DATA MIN DATA 0A4H ;TIC - MIN DATA HOUR DATA 0A5H ;TIC - HOUR DATA INTVAL DATA 0A6H ;TIC INTERVAL REGISTER DPCON DATA 0A7H ;DUAL DATA POINTER CONTROL REGISTER IE DATA 0A8H ;INTERRUPT ENABLE 1 IEIP2 DATA 0A9H ;INTERRUPT ENABLE 2 PWMCON DATA 0AEH ;PWM CONTROL REGISTER CFG831 DATA 0AFH ;GENERAL FLASH/PWM CONTROL REGISTER P3 DATA 0B0H ;PORT 3 PWM0L DATA 0B1H ;PWM DATA REGISTER PWM0H DATA 0B2H ;PWM DATA REGISTER PWM1L DATA 0B3H ;PWM DATA REGISTER PWM1H DATA 0B4H ;PWM DATA REGISTER SPH DATA 0B7H ;EXTENDED STACK POINTER REGISTER IP DATA 0B8H ;INTERRUPT PRIORITY ECON DATA 0B9H ;FLASH EEPROM CONTROL EDATA1 DATA 0BCH ;FLASH EEPROM DATA1 EDATA2 DATA 0BDH ;FLASH EEPROM DATA2 EDATA3 DATA 0BEH ;FLASH EEPROM DATA3 EDATA4 DATA 0BFH ;FLASH EEPROM DATA4 WDCON DATA 0C0H ;WATCHDOG TIMER CONTROL CHIPID DATA 0C2H ;CHIPID REGISTER EADRL DATA 0C6H ;FLASH EEPROM PAGE ADDRESS - LOW BYTE EADRH DATA 0C7H ;FLASH EEPROM PAGE ADDRESS - LOW BYTE T2CON DATA 0C8H ;TIMER 2 CONTROL RCAP2L DATA 0CAH ;TIMER 2 CAPTURE REGISTER - LOW BYTE RCAP2H DATA 0CBH ;TIMER 2 CAPTURE REGISTER - HIGH BYTE TL2 DATA 0CCH ;TIMER 2 - LOW BYTE TH2 DATA 0CDH ;TIMER 2 - HIGH BYTE PSW DATA 0D0H ;PROGRAM STATUS WORD DMAL DATA 0D2H ;DMA ADDRESS LOW BYTE DMAH DATA 0D3H ;DMA ADDRESS HIGH BYTE DMAP DATA 0D4H ;DMA ADDRESS PAGE BYTE ADCCON2 DATA 0D8H ;ADC CONTROL ADCDATAL DATA 0D9H ;ADC DATA LOW BYTE ADCDATAH DATA 0DAH ;ADC DATA HIGH BYTE PSMCON DATA 0DFH ;POWER SUPPLY MONITOR ACC DATA 0E0H ;ACCUMULATOR DCON DATA 0E8H ;D1 AND D0 CONTROL I2CCON DATA 0E8H ;I2C CONTROL ADCCON1 DATA 0EFH ;ADC CONTROL B DATA 0F0H ;MULTIPLICATION REGISTER ADCOFSL DATA 0F1H ;ADC OFFSET LOW BYTE ADCOFSH DATA 0F2H ;ADC OFFSET HIGH BYTE ADCGAINL DATA 0F3H ;ADC GAIN LOW BYTE ADCGAINH DATA 0F4H ;ADC GAIN HIGH BYTE ADCCON3 DATA 0F5H ;ADC CONTROL SPIDAT DATA 0F7H ;SPI DATA REGISTER SPICON DATA 0F8H ;SPI CONTROL REGISTER DAC0L DATA 0F9H ;DAC0 LOW BYTE DAC0H DATA 0FAH ;DAC0 HIGH BYTE DAC1L DATA 0FBH ;DAC1 LOW BYTE DAC1H DATA 0FCH ;DAC1 HIGH BYTE DACCON DATA 0FDH ;DAC CONTROL REGISTER IT0 BIT 088H ;TCON.0 - EXT. INTERRUPT 0 TYPE IE0 BIT 089H ;TCON.1 - EXT. INTERRUPT 0 EDGE FLAG IT1 BIT 08AH ;TCON.2 - EXT. INTERRUPT 1 TYPE IE1 BIT 08BH ;TCON.3 - EXT. INTERRUPT 1 EDGE FLAG TR0 BIT 08CH ;TCON.4 - TIMER 0 ON/OFF CONTROL TF0 BIT 08DH ;TCON.5 - TIMER 0 OVERFLOW FLAG TR1 BIT 08EH ;TCON.6 - TIMER 1 ON/OFF CONTROL TF1 BIT 08FH ;TCON.7 - TIMER 1 OVERFLOW FLAG T2 BIT 090H ;P1.0 - TIMER 2 TRIGGER INPUT T2EX BIT 091H ;P1.1 - TIMER 2 COUNT INPUT RI BIT 098H ;SCON.0 - RECEIVE |
4樓: | >>參與討論 |
作者: Volitation 于 2006/12/22 17:03:00 發(fā)布:
搞定了 查看了一些書籍后,問題解決。只要去掉這一行指令$MOD831,然后添加下面兩行語句就可以了。 $NOMOD51 $INCLUDE (MOD831) 解釋: $NOMOD51,這一指令功能是使A51不識別8051的所有預定義符號。 $INCLUDE (MOD831),這一指令功能使用用戶自定義的符號文件。 這兩條語句必須配合使用,使用了$INCLUDE (MOD831),就必須使用$NOMOD51,否則回因多重定義而產生錯誤。同時,要先用$NOMOD51,后用$INCLUDE (MOD831)。 |
|
|
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |