/*使用定时器0的8位实现蜂鸣器发出5KHZ声音*/
#include <p18cxxx.h>/*18F系列单片机头文件*/
void PIC18F_High_isr(void);/*中断服务函数声明*/
void PIC18F_Low_isr(void);
#pragma code high_vector_section=0x8
/*高优先级中断响应时,会自动跳转到0x8处*/
/*利用预处理器指令#pragma code来指定后面的程序在ROM中的起始地址为0x08,*/
/*它是告诉连接器定位到特定的代码段,HIGH_INTERRUPT_VECTOR 是该特定代码段的段名*/
void high_vector (void)
{
_asm goto PIC18F_High_isr _endasm/*通过一条跳转指令(汇编指令),跳转到中断服务函数(中断服务程序)处*/
}
#pragma code low_vector_section=0x18
/*低优先级中断响应时,会自动跳转到0x18处*/
void low_vector (void)
{
_asm goto PIC18F_Low_isr _endasm
}
#pragma code
/*这条语句不是多余的,它是告诉连接器回到默认的代码段,*/
/*如果不加的话,连接器就会傻傻地把后面的代码紧跟着上面的代码一直放下去。*/
/*而18f4520.lkr文件里定义了向量区地址最多到0x29,所以如果没加此句通常会报错*/
/*---高优先级中断服务程序---*/
#pragma interrupt PIC18F_High_isr
/*利用预处理器指令#pragma interrupt来声明后面的函数是低优先级中断服务函数(中断服务程序),*/
/*注意:关键字是interrupt,和低优先级中断时不同*/
/*一旦指定后面的函数是低优先级中断服务程序,系统在进入该函数时,会自动保护现场,退出前自动恢复现场,*/
/*同时中断服务程序执行完毕后,会自动返回断点,*/
/*中断服务函数前必须加该语句*/
void PIC18F_High_isr (void)
{
TMR0L=20;/*TMR0重新置初值*/
PORTBbits.RB4=~PORTBbits.RB4;
INTCONbits.TMR0IF=0; /*TMR0溢出标志清零*/
}
/*---低优先级中断服务程序---*/
#pragma interruptlow PIC18F_Low_isr
/*注意:关键字是interruptlow,和高优先级中断时不同*/
void PIC18F_Low_isr (void)
{
}
void main(void)/*主函数*/
{
TRISBbits.TRISB4=0;//B4输出
PORTBbits.RB4=1; //B4输出高电平
INTCONbits.GIE=0;/*关全局中断*/
RCONbits.IPEN=1; /*使能中断优先级*/
T0CON=0b01001000;/*TMR0设置:停止运行、8位定时,F=FOSC,无预分频*/
//T0CONbits.TMR0ON=0/*禁止Timer0*/
//T0CONbits.T08BIT=1/*Timer0 被配置为8位定时计数器*/
//T0CONbits.T0CS=0/*内部指令周期时钟(CLKO)作为时钟源*/
//T0CONbits.PSA=0/*未分配Timer0预分频器*/
TMR0L=20;/*TMR0置初值*/
INTCONbits.TMR0IF=0;/*Timer0溢出标志清零*/
INTCONbits.TMR0IE=1;/*允许Timer0溢出中断*/
INTCON2bits.TMR0IP=1;/*Timer0中断为高优先级*/
T0CONbits.TMR0ON=1;/*启动TMR0*/
INTCONbits.GIE=1;/*开全局中断*/
while(1)
{
/*现在主程序核心部分是空的*/
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
PIC单片机1-5 程序及仿真合集: PIC单片机1——按钮测试 https://blog.csdn.net/fengyuzhe13/article/details/127959793 PIC单片机2——点亮LED https://blog.csdn.net/fengyuzhe13/article/details/127963369 PIC单片机3——外部中断 https://blog.csdn.net/fengyuzhe13/article/details/128065288 PIC单片机4——定时器方波 https://blog.csdn.net/fengyuzhe13/article/details/128074963 PIC单片机5——串口 中断 https://blog.csdn.net/fengyuzhe13/article/details/128084478
资源推荐
资源详情
资源评论
收起资源包目录
PIC单片机1-5 程序及仿真合集 (222个子文件)
usart.as 54KB
t.as 41KB
int.as 40KB
lights.as 35KB
button.as 35KB
usart.as 33KB
45.as 32KB
startup.as 5KB
startup.as 5KB
startup.as 4KB
startup.as 4KB
startup.as 4KB
startup.as 4KB
startup.as 4KB
t.c 2KB
int.c 2KB
main.c 2KB
main.c 659B
main.c 379B
mian.c 359B
main.c 264B
mydelay.c 128B
mydelay.c 128B
mydelay.c 128B
usart.cmf 17KB
usart.cmf 12KB
int.cmf 12KB
lights.cmf 12KB
t.cmf 12KB
button.cmf 12KB
45.cmf 10KB
usart.cof 27KB
t.cof 21KB
int.cof 20KB
usart.cof 18KB
button.cof 16KB
lights.cof 15KB
45.cof 11KB
mydelay.d 88B
main.d 45B
mydelay.d 44B
main.d 35B
main.d 35B
lights.d 31B
main.d 25B
mian.d 25B
int.d 22B
t.d 16B
Last Loaded t.DBK 101KB
Last Loaded int.DBK 97KB
Last Loaded 45.DBK 89KB
Last Loaded usart.DBK 86KB
Last Loaded usart.DBK 86KB
Last Loaded 45.DBK 84KB
t.DSN 101KB
int.DSN 98KB
45.DSN 90KB
45.DSN 90KB
usart.DSN 86KB
usart.DSN 86KB
45.DSN 86KB
funclist 283B
funclist 132B
funclist 132B
funclist 95B
funclist 95B
funclist 69B
funclist 69B
17.gif 7.02MB
17.gif 5.33MB
17.gif 4.14MB
17.gif 2.82MB
p18f458.h 2KB
mydelay.h 70B
mydelay.h 70B
mydelay.h 70B
usart.hex 2KB
t.hex 934B
int.hex 914B
usart.hex 257B
lights.hex 239B
button.hex 218B
45.hex 112B
usart.hxl 1KB
t.hxl 1KB
int.hxl 982B
usart.hxl 903B
lights.hxl 802B
button.hxl 726B
45.hxl 718B
usart.lst 56KB
t.lst 30KB
int.lst 30KB
lights.lst 14KB
button.lst 14KB
startup.lst 12KB
startup.lst 12KB
usart.lst 12KB
startup.lst 9KB
startup.lst 9KB
共 222 条
- 1
- 2
- 3
资源评论
- weixin_436446872023-11-06资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
- 滨åå2023-07-17资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
fengyuzhe13
- 粉丝: 9884
- 资源: 95
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功