最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

急!急!請(qǐng)教c編譯器的問題!

作者:wyhuainan 欄目:單片機(jī)
急!急!請(qǐng)教c編譯器的問題!
我用的是mplab ide 6.60+HT-PIC v8.01PL3 我編了個(gè)簡(jiǎn)單的time0定時(shí)中斷程序,但是中斷服務(wù)程序怎么無(wú)法進(jìn)行編譯,就是中斷服務(wù)程序無(wú)法生成匯編代碼。我用HT-PIC v8.01PL3 自帶的timer0.c例子也不行。幫我看看到底是啥原因?謝謝啦!


#include <pic.h>

/*
* Example code for using timer0 on a 17C756
* Just sets up a 1 second interrupt and increments a variable
*/

/*
* Calculate preload VALUE for one second timer
*/

#define PERIOD 1000000  // period in uS - one second here
#define XTAL 4000000  // CRYSTAL frequency - 4MHZ
#define ICLK (XTAL/4) // CRYSTAL is divided by four
#define SCALE 16  // prescale by 16 - check for overflow!

#define PRELOAD PERIOD*ICLK/SCALE/1000000

unsigned LONG seconds; // second count

/* service routine for timer 0 interrupt */

void interrupt
timer0_isr(void) @ 0x10
{
seconds++;
TMR0 += -PRELOAD; // re-load timer

// no need to clear T0IF - the HARDWARE did it
}

main()
{
// initialize timer 0;

T0STA = 0b01000;  // prescale by 16
T0CS = 1;   // SELECT internal clock
TMR0 = -PRELOAD; // preload timer
T0IE = 1;   // enable timer interrupt
GLINTD = 0;   // enable GLOBAL interrupts

for(;;)
  continue;  // let interrupt do its job
}



2樓: >>參與討論
noley
中斷用錯(cuò)了!
這個(gè)可以直接跳進(jìn)TMO中斷嗎?有點(diǎn)懷疑!PIC的中斷入口好像只有一個(gè)呀!跟51的不一樣!多看看數(shù)據(jù)手冊(cè)!
void interrupt timer0_isr(void) @ 0x10


3樓: >>參與討論
fanguluke
我有一個(gè)已經(jīng)調(diào)試好的例子。
#include <pic.h>
#define        time1_hi 0x3C
#define        time1_lo 0xD3
#define        on 1
#define        off 0

typedef struct timetype{CHAR HH,MM,SS,CC,Y,M,D;};

struct timetype time;

CHAR     month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
CHAR data;

void leap_year()
{
    if ((time.Y%400==0)||(time.Y%4==0)&&(time.Y%100!=0)) month[1]=29;
    else month[1]=28;
}

void reset_time(struct timetype *time)
{        //time.Y=0 means 2000 year
    (*time).HH=0;(*time).MM=0;(*time).SS=0;(*time).CC=0;
    (*time).Y=0;(*time).M=1;(*time).D=1;
}

void set_time0_int(CHAR ON){if(ON){TMR0IE=1;T0CS=0;}else{TMR0IE=0;T0CS=1;}}

void set_time1_int(CHAR ON)
{    if (ON) {TMR1ON=1;TMR1IE=1;TMR1CS=0;TMR1IF=0;PEIE=1;}
    else {TMR1ON=0;TMR1IE=0;TMR1CS=1;}
}

void interrupt timer()
{
    if(TMR0IF) { TMR0IF=0;TMR0=10; RB7=!RB7; }
    else if (TMR1IF)
        {    TMR1IF=0;
            TMR1H=time1_hi;
            TMR1L=time1_lo;
            if (++time.CC>=20)
            {    time.CC=0;
                if (++time.SS>=60)
                {    time.SS=0;
                    if (++time.MM>=60)        //for exam
                    {    time.MM=0;
                        if (++time.HH>=24)
                        {    time.HH=0;
                            if (++time.D>month[time.M-1])
                            {    time.D=1;
                                if (++time.M>12) {time.M=1;time.Y++;}
                                else if (time.M==2) leap_year();
            }}}}}
        }
}

CHAR pppp(int p)
{CHAR i,j,ch,g;
    for (i=0;i<=ch;i++)
    {    j=g;
        j=g++;
    }
    return(j);
}

void main(void)
{
       int p=2000;  
       PSA=0;    //prescale assiged  to WDT
       RBPU=0;   // enable weak pull_up
       set_time0_int(off);
       set_time1_int(on);
       GIE=1;time.SS=20;
       reset_time(&time);
       while(1)
        {
            asm("clrwdt");
            p++;
            pppp(1);
        }
}


4樓: >>參與討論
wyhuainan
多謝樓上2位熱心解答!
多謝樓上2位熱心解答!
noley:我提供的是HT-PIC v8.01PL3 安裝好后自帶的例子。我自己編的也不行。
fanguluke:謝謝你提供的程序。我編譯了下,中斷服務(wù)程序還是沒有對(duì)應(yīng)的匯編代碼。
1:                 #include <pic.h>
2:                 #define        time1_hi 0x3C
3:                 #define        time1_lo 0xD3
4:                 #define        on 1
5:                 #define        off 0
6:                 
7:                 typedef struct timetype{CHAR HH,MM,SS,CC,Y,M,D;};
8:                 
9:                 struct timetype time;
10:                
11:                CHAR     month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
12:                CHAR data;
13:                
14:                void leap_year()
15:                {
16:                    if ((time.Y%400==0)||(time.Y%4==0)&&(time.Y%100!=0)) month[1]=29;
00073B    3090     MOVLW 0x90
00073C    00F2     MOVWF 0x72
00073D    3001     MOVLW 0x1
00073E    00F3     MOVWF 0x73
00073F    1283     BCF 0x3, 0x5
000740    1303     BCF 0x3, 0x6
000741    0825     MOVF 0x25, W
000742    00F0     MOVWF 0x70
000743    01F1     CLRF 0x71
000744    120A     BCF 0xa, 0x4
000745    118A     BCF 0xa, 0x3
000746    27A5     CALL 0x7a5
000747    120A     BCF 0xa, 0x4
000748    118A     BCF 0xa, 0x3
000749    0871     MOVF 0x71, W
00074A    0470     IORWF 0x70, W
00074B    1D03     BTFSS 0x3, 0x2
00074C    2F4E     GOTO 0x74e
00074D    2F62     GOTO 0x762
00074E    0825     MOVF 0x25, W
00074F    3903     ANDLW 0x3
000750    1D03     BTFSS 0x3, 0x2
000751    2F61     GOTO 0x761
000752    2F53     GOTO 0x753
000753    3064     MOVLW 0x64
000754    00F1     MOVWF 0x71
000755    0825     MOVF 0x25, W
000756    120A     BCF 0xa, 0x4
000757    118A     BCF 0xa, 0x3
000758    276F     CALL 0x76f
000759    120A     BCF 0xa, 0x4
00075A    118A     BCF 0xa, 0x3
00075B    0870     MOVF 0x70, W
00075C    3800     IORLW 0
00075D    1903     BTFSC 0x3, 0x2
00075E    2F61     GOTO 0x761
00075F    2F60     GOTO 0x760
000760    2F62     GOTO 0x762
000761    2F63     GOTO 0x763
000762    2F65     GOTO 0x765
000763    2F64     GOTO 0x764
000764    2F68     GOTO 0x768
000765    301D     MOVLW 0x1d
000766    00B1     MOVWF 0x31
17:                    else month[1]=28;
000768    301C     MOVLW 0x1c
000769    1283     BCF 0x3, 0x5
00076A    1303     BCF 0x3, 0x6
18:                }
00076C    1303     BCF 0x3, 0x6
19:                
20:                void reset_time(struct timetype *time)
21:                {        //time.Y=0 means 2000 year
0006E5    1283     BCF 0x3, 0x5
0006E6    1303     BCF 0x3, 0x6
22:                    (*time).HH=0;(*time).MM=0;(*time).SS=0;(*time).CC=0;
0006E2    0084     MOVWF 0x4
0006E3    1383     BCF 0x3, 0x7
0006E8    0A2A     INCF 0x2a, W
0006E9    0084     MOVWF 0x4
0006EA    1383     BCF 0x3, 0x7
0006EB    0180     CLRF 0
0006EC    082A     MOVF 0x2a, W
0006ED    3E02     ADDLW 0x2
0006EE    0084     MOVWF 0x4
0006EF    1383  &n
5樓: >>參與討論
fanguluke
我對(duì)PIC的匯編不是很熟悉,讀還勉強(qiáng),可能我?guī)筒涣四恪?br> 
6樓: >>參與討論
wyhuainan
fanguluke兄弟,我對(duì)匯編不感冒,所以才用c的。
你看看,這段中斷服務(wù)程序確實(shí)沒有對(duì)應(yīng)的匯編!暈死!其他的都有匯編代碼。
我調(diào)試定時(shí)中斷的時(shí)候,怎么都無(wú)法響應(yīng)中斷,一看匯編代碼才知道沒有被編譯。
請(qǐng)兄弟多多指點(diǎn)!

33:                void interrupt timer()
34:                {
35:                    if(TMR0IF) { TMR0IF=0;TMR0=10; RB7=!RB7; }
36:                    else if (TMR1IF)
37:                        {    TMR1IF=0;
38:                            TMR1H=time1_hi;
39:                            TMR1L=time1_lo;
40:                            if (++time.CC>=20)
41:                            {    time.CC=0;
42:                                if (++time.SS>=60)
43:                                {    time.SS=0;
44:                                    if (++time.MM>=60)        //for exam
45:                                    {    time.MM=0;
46:                                        if (++time.HH>=24)
47:                                        {    time.HH=0;
48:                                            if (++time.D>month[time.M-1])
49:                                            {    time.D=1;
50:                                                if (++time.M>12) {time.M=1;time.Y++;}
51:                                                else if (time.M==2) leap_year();
52:                            }}}}}
53:                        }
54:                }
55:                


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教斑竹如何用PIC16C57讀取U盤數(shù)據(jù)
初學(xué)者跟著張工,玩玩圓周尋址,請(qǐng)大家指出不足之處,共同修改。
談PIC仿真器
pic的TIMER2預(yù)分頻比的設(shè)定,怎么書上沒有介紹
有1kPIC16F73芯片,預(yù)購(gòu)從速
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)