找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2617|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

程序代碼疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60486 發(fā)表于 2014-4-9 08:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
新手請教:網(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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:60076 發(fā)表于 2014-4-9 11:52 | 只看該作者
當(dāng)然可以修改延時(shí) 函數(shù)即可
回復(fù)

使用道具 舉報(bào)

板凳
ID:60486 發(fā)表于 2014-4-11 23:51 | 只看該作者
liumei 發(fā)表于 2014-4-9 11:52
當(dāng)然可以修改延時(shí) 函數(shù)即可

如何修改,請前輩指點(diǎn)
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表