//**********************************************************
//* Ex9_1_TMR1_INT.c
//* 設計一個0.5秒讓 PORTD 的 LED 所顯示的二進位數字自動加一的程式
//**********************************************************
#include <p18f4520.h> //納入微控制器定義檔
#include <timers.h> //納入計時器函式庫定義檔
// 結構位元定義
#pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF
#define TMR1_VAL 65536-16384 // Timer1 設定為 500ms 中斷一次
//宣告函式原型
void Init_TMR1(void);
void timer1_isr (void);
//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18
void low_interrupt (void)
{
_asm GOTO timer1_isr _endasm
}
#pragma code
#pragma interruptlow timer1_isr
void timer1_isr (void)
{
PIR1bits.TMR1IF = 0; // 清除中斷旗標
WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值
PORTD++; // 遞加PORTD
}
/*
void _ISR _T1Interrupt(void)
{
;
}
*/
void main (void) {
PORTD = 0x00; // 將PORTD清除關閉LED
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出
Init_TMR1(); // 初始化設定Timer1函式
INTCONbits.PEIE = 1; // 開啟周邊中斷功能
INTCONbits.GIE = 1; // 開啟全域中斷控制
while (1); // 無窮迴圈
}
void Init_TMR1 (void){
OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫
T1_16BIT_RW & // 初始化設定Timer1
T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1)
T1_PS_1_1 &
T1_OSC1EN_ON &
T1_SYNC_EXT_ON );
WriteTimer1(TMR1_VAL); // 寫入預設值
RCON=0X80;
T1CON=0X09;
IPR1bits.TMR1IP = 0;
PIE1bits.TMR1IE = 1;
PIR1bits.TMR1IF = 0; // 清除中斷旗標
}
TMR1_INT.rar_pic18 _visual c
版权申诉
82 浏览量
2022-09-14
17:24:37
上传
评论
收藏 993B RAR 举报
局外狗
- 粉丝: 66
- 资源: 1万+
最新资源
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
- node-v18.20.2-linux-arm64
- 222222222222
- 16张相机标定图片,可复现本文畸变矫正
- dbeaver-ce-23.3.1-x86_64-setup.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈