打印
[PIC®/AVR®/dsPIC®产品]

PIC18F25K80来高手

[复制链接]
1117|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
137081866|  楼主 | 2014-12-8 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
* File:   main.c
* Author: bigwater
*
* Created on December 2, 2014, 12:21 AM
*/

#include <stdio.h>
#include <stdlib.h>
#include <pic18.h>
#include <pic18f25k80.h>

#pragma config FOSC = INTIO2  //Internal RC oscillator 选择内部时钟
#pragma config FOSC WDTEN = OFF //WDT disabled in hardware 禁止看门狗
#pragma config FOSC XINST = OFF // Extended Instruction Set Off
#pragma config CONFIG3H = 0X09 //选择内部复位
/*
*
*/
unsigned int temp;  //全局变量

void PIC_Init(void)
{
    OSCCON|=0X50; //振荡器 4MHz
    OSCTUNEbits.PLLEN=0; //禁止4位PLL
    PORTA     =0X00;
        ANCON1 = 0x00;
        TRISA = 0xFF; //设置数字输出
    TRISA=0X00; //Port A outport 配置Port A 输出
    LATA=0X00;  // Port A outport low 配置Port A 输出低电平
       
        //TRISB=0X00; //Port B outport 配置Port B 输出
        //TRISB = 0xFFFD;
        //LATB=0X00;  // Port B outport low 配置Port B 输出低电平
        //INTCON2bits.nRBPU=1;
}

void timer1_init(void)   //4M/4 约为1us
{
        T1CON=0X01;         //16bit 定时方式
        TMR1IF=0;        //clear timer1 Int flag
        TMR1IE=1;        //enable timer1 Int
        TMR1H=0xFC;      //设置计数器高位
        TMR1L=0x26;      //设置计数器低位  
                         //约为 1ms 一次中断
    PEIE=1    ;//enable peripheral interrupt
        GIE=1;           //enable global interrupt
}
void interrupt ISR(void)
{

    if(TMR1IF==1)
    {
            TMR1H=0XFC;    //重置计数器高位
            TMR1L=0x26;    //重置计数器低位
            TMR1IF=0;      //clear time1 interrupt flag
        temp++;       //中断次数累加
        if(temp>499)  //500次约为0.5S
        {
            temp=0;   //清零
            RA0=!RA0; //PortA 的物理上第一脚 翻转
                }
    }
}
int main(void)
{
    PIC_Init();
    timer1_init();
    while(1);
    return (EXIT_SUCCESS);
}

示波器测不出我的输出脚的波形,请问我哪里写错了么?。新手别喷
沙发
137081866|  楼主 | 2014-12-8 16:57 | 只看该作者
复位一直是高电平,设置内置晶振,晶振有波形。

使用特权

评论回复
板凳
wangch_sh| | 2014-12-8 17:21 | 只看该作者
先不用中断,让RA0输出波形看对不对,然后再用中断。

使用特权

评论回复
地板
137081866|  楼主 | 2014-12-8 17:59 | 只看该作者
wangch_sh 发表于 2014-12-8 17:21
先不用中断,让RA0输出波形看对不对,然后再用中断。

不行哦。注释了中断方法也不行

使用特权

评论回复
5
137081866|  楼主 | 2014-12-8 18:02 | 只看该作者
寄存器有写错么?

使用特权

评论回复
6
wangch_sh| | 2014-12-8 18:02 | 只看该作者
中断注释了,主程序改了吗?

使用特权

评论回复
7
137081866|  楼主 | 2014-12-8 18:13 | 只看该作者
wangch_sh 发表于 2014-12-8 18:02
中断注释了,主程序改了吗?

没有,要怎么改:(

使用特权

评论回复
8
yklstudent| | 2014-12-8 18:59 | 只看该作者
先确认把你的狗给关起来,然后再确认配置位是否设置合理了

使用特权

评论回复
9
wangch_sh| | 2014-12-8 19:34 | 只看该作者
我的意思是,你不用中断,在主程序里让IO口高低变化。把这个搞好了,再用中断搞。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

19

帖子

0

粉丝