📄 main.lis
字号:
.module main.c
.area text
0000 _main::
0000 ; /*-----------------------------------------------------*
0000 ; *文件名:Tim1Ch0I.prj *
0000 ; *硬件接线:1:PTA.1接指示灯 *
0000 ; * 2:PTD.4,即定时器1通道0(21脚),接开关 *
0000 ; *程序描述:以输入捕捉中断方式, *
0000 ; * 开关拨动使捕捉中断取反指示灯PTA1,使其闪动 *
0000 ; *目的:学习HC08系列定时器溢出捕捉功能 *
0000 ; *说明:本例是将定时器1通道0(21脚)设为"跳变沿捕捉" *
0000 ; * (即电平发生变化时产生中断),验证方法是将21脚不 *
0000 ; * 断接高电平、低电平,此时指示灯PTA1状态跟随改变 *
0000 ; *---------《嵌入式应用技术基础教程》教学实例----------*/
0000 ; #include "GP32C.h"
0000 ; #include "head.h"
0000 ; /*函数声明*/
0000 ; void SetTim1Ch0I(void); //定时器1和定时器1通道0初始化
0000 ;
0000 ; void main()
0000 ; {
0000 ; asm("SEI"); //禁止所有中断
0000 9B SEI
0001 ; //[I/O初始化]
0001 ; Light_D|=1<<Light_Pin; //令指示灯引脚为输出
0001 1204 bset #1,0x4
0003 ; Light_P|=1<<Light_Pin; //初始时,指示灯"暗"
0003 1200 bset #1,0
0005 ; //[定时器1和定时器1通道0初始化]
0005 ; SetTim1Ch0I();
0005 CD000D jsr _SetTim1Ch0I
0008 95 tsx
0009 ; asm("CLI"); //开放中断
0009 9A CLI
000A L2:
000A L3:
000A ; //[主循环开始,为空操作]
000A ; //[等待输入捕捉中断,(开关的拨动)]
000A ; while(1);
000A 20FE bra L2
000C X0:
000C L1:
000C .dbline 0 ; func end
000C 81 rts
000D _SetTim1Ch0I::
000D ; }
000D ;
000D ; /*SetTim1Ch0I:定时器1和定时器1通道0 初始化-------------*
000D ; * 功能:初始化定时器1和定时器1通道0 *
000D ; * 参数:无 *
000D ; * 返回:无 *
000D ; *-----------------------------------------------------*/
000D ; void SetTim1Ch0I()
000D ; {
000D ; T1SC=0b00110000;//允许溢出中断、不启动计数、分频因子=1
000D A630 lda #48
000F B720 sta 0x20
0011 ; T1SC0=0b01001100; //01001100设置通道0输入捕捉模式,
0011 A64C lda #76
0013 B725 sta 0x25
0015 ; //允许输入捕捉中断,跳变沿捕捉
0015 ; T1SC&=0b11011111; //允许定时器1计数寄存器计数
0015 B620 lda 0x20
0017 A4DF and #-33
0019 B720 sta 0x20
001B L5:
001B .dbline 0 ; func end
001B 81 rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -