收藏 分享(赏)

飞思卡尔8位单片机MC9S0810程序定时溢出中断编程C语言程序例.doc

上传人:hwpkd79526 文档编号:7608572 上传时间:2019-05-22 格式:DOC 页数:3 大小:38.50KB
下载 相关 举报
飞思卡尔8位单片机MC9S0810程序定时溢出中断编程C语言程序例.doc_第1页
第1页 / 共3页
飞思卡尔8位单片机MC9S0810程序定时溢出中断编程C语言程序例.doc_第2页
第2页 / 共3页
飞思卡尔8位单片机MC9S0810程序定时溢出中断编程C语言程序例.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、10.2.3 定时溢出中断编程 C 语言程序例(1)定时溢出中断编程 C 语言程序例主程序实例编号:C05_1 路径:CC05_1 定时器溢出中断 (Timer1.prj)/*-*工 程 名:Timer1.prj *硬件连接:无 *程序描述:1.从串口接收表示时间的 3 字节数据 * 2.利用定时器溢出中断修改时间,并发送新时间 *目 的:学习定时器基本功能 *-嵌入式应用技术基础教程教学实例-*/头文件#include “GP32C.H“#include “SCI.h“ /串行通信子程序头文件/有关寄存器位定义#define TSTOPBit 5 /定时器计数停止位#define TOFBi

2、t 7 /定时器溢出标志位/函数声明extern void SCIInit(void);extern void SCISendN(unsigned char n,unsigned char ch);void Timer1init(void);unsigned char time3; /存放时、分、秒/*=*/*主程序void main()unsigned char i; unsigned char j;asm(“SEI“); /关总中断SCIInit();Timer1init(); /调定时器 1 初始化子程序SCC2|=(15); /令 SCC2.5=1,允许接收中断asm(“CLI“);

3、/开总中断/给时分秒赋初始值time0=0; time1=0; time2=0; i=time2;while(1)j=time2;if (i!=j) /数组已经更新SCISendN(3,time); i=j; /发送新数据/*内部直接调用子程序存放处*/*Timer1init:定时器 1 初始化子程序-*功能:对定时器 1 初始化 *参数:无 *返回:无 *-*/void Timer1init(void)/允许溢出中断、不启动计数、分频因子=64T1SC=0b01100110;/计数寄存器初值=0x0000T1CNTH=0x00; T1CNTL=0x00; /1 秒产生 1 次溢出中断,计数寄

4、存器=1 (2457600/64)=9600T1MODH=0x96; T1MODL=0x00;/允许定时器 1 计数寄存器计数T1SC(2)定时溢出中断编程 C 语言程序例矢量表文件定时溢出中断编程 C 语言程序例矢量表文件 (vectors08.c)/*-*文件名:vectors08.c *功 能:用于定义中断矢量表 *-*/#include “GP32C.H“#include “SCI.h“ /串行通信头文件/*相应寄存器定义*/#define TSTOPBit 5 /定时器计数停止位#define TOFBit 7 /定时器溢出标志位/*isrTIMER1:定时器溢出中断处理函数-*功

5、能:给内存单元 Time0-2(时分秒)赋值 *-*/extern unsigned char time3; /H M S#pragma interrupt_handler isrTIMER1void isrTIMER1(void)unsigned char i;asm(“SEI“); /关总中断/-time2+; /秒数加 1if (time2!=60) goto isrTIMER1_exit; /秒数未增加到 60,转time2=0; time1+; /秒数增加到 60,清 0,分钟数加 1if (time1!=60) goto isrTIMER1_exit; /分钟数未增到 60,转ti

6、me1=0; time0+; /分钟数增加到 60,清 0,小时数加 1if (time0!=24) goto isrTIMER1_exit; /小时数未增到 24,转time0=0; /时数增加到 24,清 0isrTIMER1_exit: /-/清除定时器溢出标志位T1SCasm(“CLI“); /开总中断/*isrRe:接收中断处理函数-*功 能:接收 3 字节基准时分秒放入内存单元 Time0-2 *-*/#pragma interrupt_handler isrRe void isrRe(void) asm(“SEI“); /禁止所有中断/接收数据SCIReN(3,time);asm

7、(“CLI“); /开放总中断/未定义的中断处理函数,本函数不能删除#pragma interrupt_handler isrDummy void isrDummy(void) #pragma abs_address:0xffdc /中断向量表起始地址void (* const _vectab)(void) = isrDummy, /时基中断 isrDummy, /AD 转换中断 isrDummy, /键盘中断 isrDummy, /SCI TC/TE isrRe, /SCI RF/IDLE isrDummy, /SCI PE/FE/NF/ORisrDummy, /SPI TE isrDummy, /SPI MOD/OVR/RFisrDummy, /TIM2 溢出中断 isrDummy, /TIM2 通道 1isrDummy, /TIM2 通道 0isrTIMER1, /TIM1 溢出中断 isrDummy, /TIM1 通道 1isrDummy, /TIM1 通道 0isrDummy, /CGM isrDummy, /IRQ isrDummy /SWI /RESET 也是中断,定义在 crt08.o 中 ;#pragma end_abs_address

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报