10.3.3 输入捕捉中断编程实例
下面程序验证定时器1通道0(引脚21)输入捕捉中断的产生,当中断发生时取反指示灯PTA1。定时器1通道0的输入捕捉中断向量的地址是$FFF6。
(1) 输入捕捉中断编程实例汇编语言程序
实例编号:A05_2 路径:\ASM\ A05_2定时器输入捕捉(Ch0main.asm)
*------------------------------------------------------*
*工 程 名:Tim1Ch0.ASM *
*硬件接线:1:PTA.1接指示灯 *
* 2:PTD.4,即定时器1通道0(21脚)接开关 *
*程序描述:输入捕捉中断方式,使开关拨动时指示灯PTA.1闪烁 *
*目 的:学习HC08系列定时器输入捕捉功能 *
*说 明:本例是将定时器1通道0(21脚)设为"跳变沿捕捉" *
*---------《嵌入式应用技术基础教程》教学实例-----------*
*[头文件]
$include "GP32ASM.H" ;包含GP32的头文件
*[两个起始地址名]
RAMstartAddr equ $0040 ;RAM的起始地址
FlashStartAddr equ $8000 ;程序开始地址
*[指示灯定义]
Light_P equ PTA ;灯(Light)接在PTA口
Light_D equ DDRA ;相应的方向寄存器
Light_Pin equ 1 ;所在的引脚
CH0FBit equ 7 ;定时器1通道标志位
*======================================================*
*[主程序]
org FlashStartAddr ;程序起始地址
MainInit: ;复位后程序从此开始执行
;[系统初始化]
SEI ;关总中断
LDHX #$023F ;堆栈初始化
TXS
JSR GP32Init ;调系统初始化子程序GP32Init
;[I/O初始化]
BSET Light_Pin,Light_D ;令指示灯引脚为输出
BSET Light_Pin,Light_P ;初始时,指示灯"暗"
;[定时器1通道0初始化]
;[不允许溢出中断、不启动计数、分频因子=1]
LDA #%00110000
STA T1SC
;[输入捕捉模式,允许输入捕捉中断,跳变沿捕捉]
LDA #%01001100
STA T1SC0
;[允许定时器1计数寄存器计数]
BCLR 5,T1SC
CLI ;开总中断
;[主循环开始]
MainLoop:
NOP
JMP MainLoop
*[内部直接调用子程序存放处]
*Tim1CH0Int:定时器1通道0输入捕捉中断子程序-------------*
*功能:定时器输入捕捉中断处理,开关拨动时指示灯PTA.1闪烁 *
*入口:无 *
*出口:无 *
*------------------------------------------------------*
Tim1CH0Int:
PSHH ;保护 H
;[至此,可读取计数器的值,可在此处添加用户的程序.本程
;序仅为实验例程,用指示等状态改变,说明发生了中断]
;指示灯状态变换
BRCLR Light_Pin,Light_P,Tim1CH0Int_1
BCLR Light_Pin,Light_P ;若原来灯暗,则变亮
BRA Tim1CH0Int_2
Tim1CH0Int_1:
BSET Light_Pin,Light_P ;若原来灯亮,则转暗
Tim1CH0Int_2:
;清除定时器1通道0输入捕捉中断标志位
LDA T1SC0
BCLR CH0FBit,T1SC0
PULH
;恢复H
RTI
*[外部子程序存放处]
$include "GP32Init.ASM"
*[中断向量]
ORG $FFF6 ;定时器1通道0输入捕捉中断向量
DW Tim1CH0Int
ORG $FFFE ;复位向量
DW MainInit
(2)输入捕捉中断编程实例C语言主程序
实例编号:C05_2 路径:\C\C05_2定时器输入捕捉(tim1ch0.prj)
/*-----------------------------------------------------*
*文件名:Tim1Ch0I.prj *
*硬件接线:1:PTA.1接指示灯 *
* 2:PTD.4,即定时器1通道0(21脚),接开关 *
*程序描述:以输入捕捉中断方式, *
* 开关拨动使捕捉中断取反指示灯PTA1,使其闪动 *
*目的:学习HC08系列定时器溢出捕捉功能 *
*说明:本例是将定时器1通道0(21脚)设为"跳变沿捕捉" *
* (即电平发生变化时产生中断),验证方法是将21脚不 *
* 断接高电平、低电平,此时指示灯PTA1状态跟随改变 *
*---------《嵌入式应用技术基础教程》教学实例----------*/
#include "GP32C.h"
#define Light_P PTA //灯(Light)接在PTA口
#define Light_D DDRA //相应的方向寄存器
#define Light_Pin 1 //所在的引脚
#define CH0FBit 7 //定时器1通道标志位
/*函数声明*/
void SetTim1Ch0I(void); //定时器1和定时器1通道0初始化
void main()
{
asm("SEI"); //禁止所有中断
//[I/O初始化]
Light_D|=1<
参数
转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应
:无 *
* 返回:无 *
*-----------------------------------------------------*/
void SetTim1Ch0I()
{
T1SC=0b00110000; //不允许溢出中断、不启动计数、分频因子=1
T1SC0=0b01001100;
//允许CH0输入捕捉中断,跳变沿捕捉
T1SC&=~(1<<5);
//允许定时器1计数寄存器计数
}
(3)输入捕捉中断编程实例C语言矢量
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
文件
输入捕捉中断编程C语言程序例矢量表文件(vectors08.c)
#include "GP32C.h"
/*[引脚定义]*/
#define Light_P PTA //灯(Light)接在PTA口
#define Light_D DDRA //相应的方向寄存器
#define Light_Pin 1 //所在的引脚
#define CH0FBit 7 //定时器1通道标志位
// vectors08.c 用于定义中断矢量表
/*isrTim1Ch0I:输入捕捉中断处理函数---------------------*
*功 能: 当前灯的状态 *
*-----------------------------------------------------*/
#pragma interrupt_handler isrTim1Ch0I
void isrTim1Ch0I(void)
{
unsigned char temp=Light_P;
temp&=1<
本文档为【输入捕捉中断编程实例】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。