白姐透特今晚开什么码

打印

18f4520如何输出1MHz方波

[复制链接]
76|14
跳转到指定楼层
楼主
下面是我自己写的代码,定时器0只计一个数输出方波仍然在200kHz多
#include <p18cxxx.h>
#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;
}

相关资料

沙发
|2019-12-19 21:23|只看该作者
计算算过能不能实现吗?
板凳
 楼主|2019-12-19 21:26|只看该作者
按道理肯定可以实现,时钟是内部振荡器8MHz的,每个计数周期0.125us,除非有什么我没考虑进去,新手还希望能请教
地板
|2019-12-19 21:30|只看该作者
你以为进中断出中断不需要时间?
5
 楼主|2019-12-19 21:32|只看该作者
已经发现这个问题了,我现在不用中断,采用外接16M晶振HSPLL模式还是达不到1MHz。不知道您有好的办法吗,十分感谢您的回复。
#include <p18cxxx.h>
#include "k18.h"


void main(void)
{
k18_init();/*HL-K18主板初始化*/
TRISD=0X00;//设置D口为输出
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
OSCCON=0x70;
OSCTUNEbits.PLLEN=1;
//Time0Init();
INTCONbits.TMR0IE=1;
INTCONbits.TMR0IF=0;
TMR0L=0xff;
T0CON=0xC8;
while(1){
    if(INTCONbits.TMR0IF==1)
       {
          PORTD=~PORTD;
          TMR0L=0xFF;
          INTCONbits.TMR0IF=0;
        }

}
}
6
|2019-12-19 21:37|只看该作者

while(1)
{
for(i=0;i<0xFFFFFFFE;i++)
{
PORTD ^= (1UL<<0);
__delay_us(1);
}
}
这样试试看
7
|2019-12-19 21:40|只看该作者
PIC的指令周期(执行一条指令消耗的时间)是时钟周期的四倍,16M的时钟可以得到4M的指令速度,循环跳转指令也要消耗指令时间,所以,你自己想。
8
 楼主|2019-12-19 21:42|只看该作者
十分感谢,已经完成了。
9
|2019-12-19 21:47|只看该作者
怎么完成的,方便就说说
10
 楼主|2019-12-19 21:50|只看该作者
我直接设置内部时钟8MHz,然后在循环里取反就行了,您的方法好像差不多。
11
|2019-12-19 21:53|只看该作者
主循环就做这一件事?
12
|2019-12-19 21:55|只看该作者
这个还是直接用PWM口最好,周期、占空比随便定义。如果没有相关接口的话还是用内部中断做好些,直接放1us中断里写一个反制就好,哦,似乎1us速度还不够。
13
|2019-12-19 22:00|只看该作者
PIC单片机有一个CLKOUT脚,用4M运行频率时,直接就输出1M的方波了
14
|2019-12-20 09:02|只看该作者
renyaq 发表于 2019-12-19 21:50
我直接设置内部时钟8MHz,然后在循环里取反就行了,您的方法好像差不多。
...

这样单片机就干不了其他事了
所以问题在于你需要单片机干嘛,方波发生器就完了啊
15
|2019-12-25 21:57|只看该作者
把频率设为4M,然后把时钟输出便能!就可以得到1M的波了!
扫描二维码,随时随地手机跟帖

本版积分规则

我要发帖投诉建议创建版块

快速回复

您需要登录后才可以回帖
登录 | 注册

论坛热帖

在线客服 快速回复 返回顶部返回列表