新手請教:網(wǎng)上看到一個(gè)程序代碼,一直不明白,問什么間隔時(shí)間幾十毫秒發(fā)送mearsure:voltage?;命令,這個(gè)間隔時(shí)間能加到幾秒鐘嗎?請高手指點(diǎn):
EMI0TC EQU 0x84; // EMIF Timing
EMI0CF EQU 0x85; // EMIF Configuration
OSCLCN EQU 0x86; // Internal Low-Freq Oscillator Control
CKCON EQU 0x8E; // Clock Control
PSCTL EQU 0x8F; // Program Store R/W Control
TMR3CN EQU 0x91; // Timer/Counter 3Control
TMR3RLL EQU 0x92; // Timer/Counter 3 Reload Low
TMR3RLH EQU 0x93; // Timer/Counter 3 Reload High
TMR3H EQU 0x95; // Timer/Counter 3 High
USB0ADR EQU 0x96; // USB0 Indirect Address Register
USB0DAT EQU 0x97; // USB0 Data Register
SCON0 EQU 0x98; // UART0 Control
SBUF0 EQU 0x99; // UART0 Data Buffer
CPT1CN EQU 0x9A; // Comparator1 Control
CPT0CN EQU 0x9B; // Comparator0 Control
CPT1MD EQU 0x9C; // Comparator1 Mode Selection
CPT0MD EQU 0x9D; // Comparator0 Mode Selection
CPT1MX EQU 0x9E; // Comparator1 MUX Selection
CPT0MX EQU 0x9F; // Comparator0 MUX Selection
SPI0CFG EQU 0xA1; // SPI Configuration
SPI0CKR EQU 0xA2; // SPI Clock Rate Control
SPI0DAT EQU 0xA3; // SPI Data
P1MDOUT EQU 0xA5; // Port 1 Output Mode Configuration
P2MDOUT EQU 0xA6; // Port 2 Output Mode Configuration
P3MDOUT EQU 0xA7; // Port 3 Output Mode Configuration
CLKSEL EQU 0xA9; // Clock Select
EMI0CN EQU 0xAA; // External Memory Interface Control
SBCON1 EQU 0xAC; // UART1 Baud Rate Generator Control
PFE0CN EQU 0xAF; // Prefetch Engine Control
OSCXCN EQU 0xB1; // External Oscillator Control
OSCICN EQU 0xB2; // Internal Oscillator Control
OSCICL EQU 0xB3; // Internal Oscillator Calibration
SBRLH1 EQU 0xB5; // UART1 Baud Rate Generator High
FLSCL EQU 0xB6; // Flash Scale
FLKEY EQU 0xB7; // Flash Lock and Key
CLKMUL EQU 0xB9; // Clock Multiplier
AMX0N EQU 0xBA; // AMUX0 Negative Channel Select
AMX0P EQU 0xBB; // AMUX0 Positive Channel Select
ADC0L EQU 0xBD; // ADC0 Low
ADC0H EQU 0xBE; // ADC0 High
SMB0CN EQU 0xC0; // SMBus Control
SMB0CF EQU 0xC1; // SMBus Configuration
SMB0DAT EQU 0xC2; // SMBus Data
ADC0GTL EQU 0xC3; // ADC0 Greater-Than Compare Low
ADC0GTH EQU 0xC4; // ADC0 Greater-Than Compare High
ADC0LTL EQU 0xC5; // ADC0 Less-Than Compare Word Low
ADC0LTH EQU 0xC6; // ADC0 Less-Than Compare Word High
P4 EQU 0xC7; // Port 4 Latch
TMR2CN EQU 0xC8; // Timer/Counter 2 Control
REG0CN EQU 0xC9; // Voltage Regulator Control
TMR2RLL EQU 0xCA; // Timer/Counter 2 Reload Low
TMR2RLH EQU 0xCB; // Timer/Counter 2 Reload High
TMR2L EQU 0xCC; // Timer/Counter 2 Low
TMR2H EQU 0xCD; // Timer/Counter 2 High
REF0CN EQU 0xD1; // Voltage Reference Control
SCON1 EQU 0xD2; // UART1 Control
SBUF1 EQU 0xD3; // UART1 Data Buffer
P1SKIP EQU 0xD5; // Port 1 Skip
P2SKIP EQU 0xD6; // Port 2 Skip
USB0XCN EQU 0xD7; // USB0 Transceiver Control
PCA0CN EQU 0xD8; // PCA0 Control
PCA0MD EQU 0xD9; // PCA0 Mode
PCA0CPM0 EQU 0xDA; // PCA0 Module 0 Mode Register
PCA0CPM1 EQU 0xDB; // PCA0 Module 1 Mode Register
PCA0CPM2 EQU 0xDC; // PCA0 Module 2 Mode Register
PCA0CPM3 EQU 0xDD; // PCA0 Module 3 Mode Register
PCA0CPM4 EQU 0xDE; // PCA0 Module 4 Mode Register
P3SKIP EQU 0xDF; // Port 3 Skip
XBR0 EQU 0xE1; // Port I/O Crossbar Control 0
XBR1 EQU 0xE2; // Port I/O Crossbar Control 1
XBR2 EQU 0xE3; // Port I/O Crossbar Control 2
SMOD1 EQU 0xE5; // UART1 Mode
EIE1 EQU 0xE6; // Extended Interrupt Enable 1
EIE2 EQU 0xE7; // Extended Interrupt Enable 2
ADC0CN EQU 0xE8; // ADC0 Control
PCA0CPL1 EQU 0xE9; // PCA0 Capture 1 Low
PCA0CPH1 EQU 0xEA; // PCA0 Capture 1 High
PCA0CPL2 EQU 0xEB; // PCA0 Capture 2 Low
PCA0CPH2 EQU 0xEC; // PCA0 Capture 2 High
PCA0CPL3 EQU 0xED; // PCA0 Capture 3 Low
PCA0CPH3 EQU 0xEE; // PCA0 Capture 3 High
RSTSRC EQU 0xEF; // Reset Source Configuration/Status
P0MDIN EQU 0xF1; // Port 0 Input Mode Configuration
P1MDIN EQU 0xF2; // Port 1 Input Mode Configuration
P2MDIN EQU 0xF3; // Port 2 Input Mode Configuration
P4MDIN EQU 0xF5; // Port 4 Input Mode Configuration
EIP1 EQU 0xF6; // Extended Interrupt Priority 1
EIP2 EQU 0xF7; // Extended Interrupt Priority 2
SPI0CN EQU 0xF8; // SPI0 Control
PCA0L EQU 0xF9; // PCA0 Counter Low
PCA0H EQU 0xFA; // PCA0 Counter High
PCA0CPL0 EQU 0xFB; // PCA0 Capture 0 Low
PCA0CPH0 EQU 0xFC; // PCA0 Capture 0 High
PCA0CPL4 EQU 0xFD; // PCA0 Capture 4 Low
PCA0CPH4 EQU 0xFE; // PCA0 Capture 4 High
VDM0CN EQU 0xFF; // VDD Monitor Control
MCE0 EQU 0x9D; // Multiprocessor communication enable
REN0 EQU 0x9C; // Receive enable
TB80 EQU 0x9B; // Transmit bit 8
RB80 EQU 0x9A; // Receive bit 8
TI0 EQU 0x99; // Transmit interrupt flag
RI0 EQU 0x98; // Receive interrupt flag
;// IE 0xA8
ESPI0 EQU 0xAE; // SPI0 interrupt enable
ET2 EQU 0xAD; // Timer2 interrupt enable
ES0 EQU 0xAC; // UART0 interrupt enable
PSPI0 EQU 0xBE; // SPI0 interrupt priority
PT2 EQU 0xBD; // Timer2 priority
PS0 EQU 0xBC; // UART0 priority
;// SMB0CN 0xC0
MASTER EQU 0xC7; // Master/slave indicator
TXMODE EQU 0xC6; // Transmit mode indicator
STA EQU 0xC5; // Start flag
STO EQU 0xC4; // Stop flag
ACKRQ EQU 0xC3; // Acknowledge request
ARBLOST EQU 0xC2; // Arbitration lost indicator
ACK EQU 0xC1; // Acknowledge flag
SI EQU 0xC0; // SMBus interrupt flag
;// TMR2CN 0xC8
TF2H EQU 0xCF; // Timer2 high byte overflow flag
TF2L EQU 0xCE; // Timer2 low byte overflow flag
TF2LEN EQU 0xCD; // Timer2 low byte interrupt enable
T2SOF EQU 0xCC; // Timer2 start-of-frame capture enable
T2SPLIT EQU 0xCB; // Timer2 split mode enable
TR2 EQU 0xCA; // Timer2 on/off control
P0MDOUT EQU 0xA4 ; // Bit1 UNUSED
T2XCLK EQU 0xC8; // Timer2 external clock select
;// PSW 0xD0
;// PCA0CN 0xD8
CF EQU 0xDF; // PCA0 counter overflow flag
CR EQU 0xDE; // PCA0 counter run control
// Bit5 UNUSED
CCF4 EQU 0xDC; // PCA0 module4 capture/compare flag
CCF3 EQU 0xDB
CCF2 EQU 0xDA; // PCA0 module2 capture/compare flag
CCF1 EQU 0xD9; // PCA0 module1 capture/compare flag
CCF0 EQU 0xD8; // PCA0 module0 capture/compare flag
;// ADC0CN 0xE8
AD0EN EQU 0xEF; // ADC0 enable
AD0TM EQU 0xEE; // ADC0 track mode
AD0INT EQU 0xED; // ADC0 converision complete interrupt flag
AD0BUSY EQU 0xEC; // ADC0 busy flag
AD0WINT EQU 0xEB; // ADC0 window compare interrupt flag
AD0CM2 EQU 0xEA; // ADC0 conversion mode select 2
AD0CM1 EQU 0xE9; // ADC0 conversion mode select 1
AD0CM0 EQU 0xE8; // ADC0 conversion mode select 0
;// SPI0CN 0xF8
SPIF EQU 0xFF; // SPI0 interrupt flag
WCOL EQU 0xFE; // SPI0 write collision flag
MODF EQU 0xFD; // SPI0 mode fault flag
RXOVRN EQU 0xFC; // SPI0 rx overrun flag
NSSMD1 EQU 0xFB; // SPI0 slave select mode 1
NSSMD0 EQU 0xFA; // SPI0 slave select mode 0
TXBMT EQU 0xF9; // SPI0 transmit buffer empty
SPIEN EQU 0xF8; // SPI0 SPI enable
SBRLL1 EQU 0xB4;
P0SKIP EQU 0xD4;
IT01CF EQU 0xE4;
ADC0CF EQU 0xBC
IDA0CN EQU 0xB9
IDA0L EQU 0x96
IDA0H EQU 0x97
TMR3L EQU 0x94
baojing_led EQU P0.0 ;LED,開機(jī)后若接受不到信號(hào),此燈亮
baojing_out EQU P0.2 ;報(bào)警信號(hào)輸出
start_in EQU P0.1 ;開機(jī)信號(hào)輸入
send_bit EQU 20H.0
send_bit0 EQU 20H.0
SEND_DIZHI EQU 30H ;發(fā)送的首地址
SEND_GESHU EQU 31H ;發(fā)送的個(gè)數(shù)
zijie_SEND EQU 32H
receive EQU 50H ;保存接受到的數(shù)據(jù)個(gè)數(shù),
receive_0 EQU 51H ;保存接受到的第1個(gè)數(shù)
receive_1 EQU 52H ;保存接受到的第2個(gè)數(shù)
receive_2 EQU 53H ;保存接受到的第3個(gè)數(shù)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
LJMP START
ORG 0003H
; LJMP I_INT0
ORG 0023H
LJMP I_uart0
ORG 0073H
LJMP I_TIMER3
DMB01: db 6DH,65H,61H,73H,75H,72H,65H,3AH,76H,6FH,6CH,74H,61H,67H,65H,3FH,3BH;;
DMB02: db 4EH,47H,3FH,3BH;
START: setb baojing_led
CLR baojing_out
MOV PCA0MD,#00H ;關(guān)看門狗。
MOV SP,#080H ;堆賤指針
LCALL Init_Device
SETB EA
;LCALL DELAY_5s ;延時(shí)5S
;clr baojing_led ;輸出low電平信號(hào)
I_A:
MOV receive,#receive_0
CLR EA
NOP
lcall RESAVE_CLR
lcall ASEND_UART0
;設(shè)置timer3參數(shù);開timer3 ;消除timer3 中斷
MOV TMR3CN,#04H
ANL TMR3CN,#7FH
MOV TMR3L,#0fH
MOV TMR3H,#060H ;MOV TMR3H,#09BH
;判斷send_bit,0 原地等待,1,向下運(yùn)行
SETB EA
CLR send_bit0
JNB send_bit0,$
I_A0: CLR EA
NOP
mov A,receive_0 ;判斷接受到的第一數(shù)據(jù)個(gè)數(shù)是不是+
CJNE A,#2BH,I_A
mov A,receive_1 ;判斷接受到的第2數(shù)據(jù)個(gè)數(shù)是不是0
CJNE A,#30H,I_A9
setb baojing_led ;輸出高電平信號(hào)
JMP I_A
I_A9: clr baojing_led ;輸出低電平信號(hào),開啟
jmp I_A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I_TIMER3: ;ANL TMR3CN,#0H ;消除中斷
;檢測RT0收到數(shù)據(jù),判斷是0或1,報(bào)警或消除報(bào)警,沒收到就亮LED
SETB send_bit
SETB send_bit0
MOV TMR3CN,#00H ;關(guān)timer3
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
I_uart0: JB TI0,I_uart0_RETI
CLR RI0
MOV A,receive
CJNE A,#5CH,I_uart1
JMP I_uart0_RETI
I_uart1: MOV R0,receive
MOV @R0,SBUF0
INC receive
I_uart0_RETI: RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ASEND_UART0: ;clr EA;關(guān)總中斷
;nop
MOV zijie_SEND,#0 ;發(fā)送序號(hào)
MOV R1,#17 ;發(fā)送個(gè)數(shù)
ASEND_UART1:
MOV DPTR,#DMB01
MOV A,zijie_SEND
MOVC A,@A+DPTR
INC zijie_SEND
MOV SBUF0,A
JNB TI0,$
CLR TI0
DJNZ R1,ASEND_UART1
;setb EA ;開總中斷
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RESAVE_CLR: MOV receive_0,#0
MOV receive_1,#0
MOV receive_2,#0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_10s:
MOV R5,#0eaH
DELAY_10s_0:
MOV R6,#0ffH
DELAY_10s_1:
MOV R7,#0ffH
DJNZ R7,$
DJNZ R6,DELAY_10s_1
DJNZ R5,DELAY_10s_0
RET
DELAY_5s:
MOV R5,#117
DELAY_5s_0:
MOV R6,#0ffH
DELAY_5s_1:
MOV R7,#0ffH
DJNZ R7,$
DJNZ R6,DELAY_5s_1
DJNZ R5,DELAY_5s_0
RET
DELAY_DD:;鍵盤防抖動(dòng)延時(shí)程序
MOV R5,#20H
DELAY_DD_0:
MOV R7,#0ffH
DJNZ R7,$
DJNZ R5,DELAY_DD_0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Timer_Init:
mov TCON, #040h
mov TMOD, #020h
mov CKCON, #008h
mov TH1, #0h
ret
UART_Init:
mov SCON0, #010h
ret
Port_IO_Init:
; P0.0 - Skipped, Push-Pull, Digital
; P0.1 - Skipped, Push-Pull, Digital
; P0.2 - Skipped, Push-Pull, Digital
; P0.3 - Skipped, Push-Pull, Digital
; P0.4 - TX0 (UART0), Push-Pull, Digital
; P0.5 - RX0 (UART0), Push-Pull, Digital
; P0.6 - Skipped, Push-Pull, Digital
; P0.7 - Skipped, Push-Pull, Digital
; P1.0 - Skipped, Push-Pull, Digital
; P1.1 - Unassigned, Open-Drain, Digital
; P1.2 - Unassigned, Open-Drain, Digital
; P1.3 - Unassigned, Open-Drain, Digital
; P1.4 - Unassigned, Open-Drain, Digital
; P1.5 - Unassigned, Open-Drain, Digital
; P1.6 - Unassigned, Open-Drain, Digital
; P1.7 - Unassigned, Open-Drain, Digital
; P2.0 - Unassigned, Open-Drain, Digital
; P2.1 - Unassigned, Open-Drain, Digital
; P2.2 - Unassigned, Open-Drain, Digital
; P2.3 - Unassigned, Open-Drain, Digital
mov P0MDOUT, #0FFh
mov P1MDOUT, #001h
mov P0SKIP, #0CFh
mov P1SKIP, #001h
mov XBR0, #001h
mov XBR1, #040h
ret
Interrupts_Init:
mov EIE1, #080h
mov EIP1, #080h
mov IE, #010h
ret
; Initialization function for device,
; Call Init_Device from your main program
Init_Device:
lcall Timer_Init
lcall UART_Init
lcall Port_IO_Init
lcall Interrupts_Init
ret
END
|