暴走的指压师

为何中年妇女对14岁正太不理不睬?28岁大妈是如何保持14岁身材与脸颊?三无蓝毛究竟身在何处?为何少年抛弃妹子去寻找基友的菊花,大妈抛弃正太去和眼镜妹百合? 一切的一切,请看《Q ヱヴァンゲリヲン新劇場版:Q 》
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Pic32时钟

Posted on 2011-02-28 11:12  晓彻  阅读(344)  评论(0编辑  收藏  举报

额,首先拿定时器开刀。仍旧是led闪烁为实验现象。但是实现的方法使用使用时钟中断和timer对比两种方法。

首先看一下ld1-ld4管脚控制。

 

led部分

 

 

 

对开发板的具体管脚说明,手册里面很清楚:

因此设置PORTB的第10-13(对应led1-led4)为output,对应为为1即可点亮。

 

 

timer部分

 

timer的编程可以使用库函数:

还是自己动手吧

 

 

查看datasheet,timer1的框图如下:

 

主要是T1CON时钟的设定。

#include <p32xxxx.h>

/*

* delaytime设置的是timer中的上限值,当timer到达这个值就将其清零,

* 从而达到反复计时的效果

*/

#define DELAY 300

 

void timer_init()

{

//T1CON |= 1;//T1CON[15]=1,ennable

T1CON = 0x8030;

}

 

void main_init()

{

timer_init();

 

TRISB = 0;//LED1-4 output

AD1PCFG = 0xffff;//all PORTB as digital

PORTB = 0xff;

 

PR1 = 0xffff;//set period register to max

 

}

 

void delay(int i)

{

TMR1 = 0;

while(TMR1 < i)

{

;

}

}

 

void delay4(int num)

{

int i = 0;

while(i < num){

i++;

}

}

 

void delay1(int i)

{

while(i>0)

{

i--;

}

}

 

main()

{

int j;

int delaytime = DELAY;

main_init();

 

while(1)

{

//all leds on

//PORTB = 0xff;

PORTBSET |= ((1 << 10) | (1 << 11) | (1 << 13));

delay(delaytime);

 

 

//all leds off

PORTB = 0;

// PORTB &= ( (~(1 << 10)) & (~(1 << 11)) & (~(1 << 12)) & (~(1 << 13)) );

delay(delaytime);

}

}