專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)
十年專注單片機方案開發(fā)的方案公司英銳恩,分享CCSC timer.c程序使用MCD2demo 用PIC16F877A片內(nèi)Timer1定時。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
/*=============================================================================
使用PIC16F877A片內(nèi)Timer1定時,運行程序:
程序開始 -> LED0亮,
每0.5秒鐘 -> LED7交替亮滅,
循環(huán)10次后 -> Timer1中斷關(guān)閉,LED6亮,LED7保持當(dāng)前狀態(tài)。
=============================================================================*/
///////////////////////////////////////////////////////////////////////////////
// MPLAB IDE V7.11 + CCS C3.18
// Use 16F877A internal timer1 for MCD2-demo
//
// by LW7807@163.com
// 2005/06/22
///////////////////////////////////////////////////////////////////////////////
#include <16F877A.h> // PIC16F877 header file
#use delay(clock=4000000) // for 4Mhz crystal
#fuses XT, NOWDT, NOPROTECT, NOLVP // for debug mode
#define TIMER1_500MS (0xFFFF - 62500 + 1)
#define DO_THIS_TIMES 10
#define LED7_IO PIN_C7
#define LED6_IO PIN_C6
#define LED0_IO PIN_C0
#define LED_ON 1
#define LED_OFF 0
int1 led7_status = LED_OFF;
int8 cnt = 0;
///////////////////////////////////////////////////////////////////////////////
//
#int_TIMER1
void timer1_isr(void)
{
led7_status = ~led7_status;
++ cnt;
if(cnt >= 2*DO_THIS_TIMES)
{
disable_interrupts(INT_TIMER1);
output_bit(LED6_IO, LED_ON);
}
}//end timer1_isr()
/*===========================================================================*/
void main(void)
{
// begin program
output_bit(LED0_IO, LED_ON);
// setup timer1 for 0.5s interrupt
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(TIMER1_500MS);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
// show led7 status
while(1){
output_bit(LED7_IO, led7_status);
}
}//end main()