论坛» 嵌入式开发» MCU

如何编程让PIC18f4520输出1MHz的方波?

工程师
2021-04-19 21:40 1楼

最近开始换方案,发现PIC涨价不多,就打算用18f4520,不是很熟悉,特来请教:如何输出1MHz的方波?

下面是我自己写的代码,定时器0只计一个数输出方波仍然在200kHz多。


#include

#include "k18.h"


void Time0Init(void);

void T0_ISR(void);


//void chk_isr(void);

#pragma interrupt chk_isr

void chk_isr(void)

{

if(INTCONbits.TMR0IF==1)

{

T0_ISR();

}


}

#pragma code My_Hiprio_int=0x08

void My_Hiprio_int(void)

{

_asm

GOTO chk_isr

_endasm

}

#pragma code





void main(void)

{

k18_init();/*HL-K18主板初始化*/

TRISD=0X00;//设置D口为输出

INTCONbits.GIE=1;

INTCONbits.PEIE=1;

OSCCON=0x70;

OSCTUNEbits.PLLEN=1;

Time0Init();

while(1){

}

}

void Time0Init(void)

{

INTCONbits.TMR0IE=1;

INTCONbits.TMR0IF=0;

T0CON=0x48;

TMR0L=0xFF;

T0CONbits.TMR0ON=1;

}


void T0_ISR(void)

{

TMR0L=0xFF;

INTCONbits.TMR0IF=0;

}


工程师
2021-04-19 21:53 2楼

你以为进中断出中断不需要时间?

工程师
2021-04-19 21:57 3楼

PIC的指令周期(执行一条指令消耗的时间)是时钟周期的四倍,16M的时钟可以得到4M的指令速度,循环跳转指令也要消耗指令时间,所以,楼主你自己想。

专家
2021-04-20 00:02 4楼

感谢楼主的分享,很实用了。

工程师
2021-04-20 00:11 5楼

感谢楼主的分享,很实用了。

专家
2021-04-20 06:24 6楼

感谢分享

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]