📄 test_int0.lst
字号:
__text_start:
__start:
002B E5CF LDI R28,0x5F
002C E0D4 LDI R29,4
002D BFCD OUT 0x3D,R28
002E BFDE OUT 0x3E,R29
002F 51C0 SUBI R28,0x10
0030 40D0 SBCI R29,0
0031 EA0A LDI R16,0xAA
0032 8308 STD Y+0,R16
0033 2400 CLR R0
0034 E6E1 LDI R30,0x61
0035 E0F0 LDI R31,0
0036 E010 LDI R17,0
0037 36E1 CPI R30,0x61
0038 07F1 CPC R31,R17
0039 F011 BEQ 0x003C
003A 9201 ST R0,Z+
003B CFFB RJMP 0x0037
003C 8300 STD Z+0,R16
003D E5E4 LDI R30,0x54
003E E0F0 LDI R31,0
003F E6A0 LDI R26,0x60
0040 E0B0 LDI R27,0
0041 E010 LDI R17,0
0042 35E5 CPI R30,0x55
0043 07F1 CPC R31,R17
0044 F021 BEQ 0x0049
0045 95C8 LPM
0046 9631 ADIW R30,1
0047 920D ST R0,X+
0048 CFF9 RJMP 0x0042
0049 940E0062 CALL _main
_exit:
004B CFFF RJMP _exit
FILE: test_int0.c
(0001) //*********************************************************
(0002) //测试功能:定时器t0产生250khz的方波
(0003) //测试方法:示波器观察 或者proteus仿真
(0004) //测试结果:ok
(0005) //时钟频率:外部8m
(0006) //管脚分配:
(0007) //注意事项:
(0008) //完成时间:2009.03.15
(0009) //**********************************************************
(0010)
(0011) //**********************************************************
(0012) //头文件
(0013) //**********************************************************
(0014) #include <iom16v.h>
(0015) #include <macros.h>
(0016) //*****************************************************
(0017)
(0018)
(0019) //*****************************************************
(0020) //全局变量定义
(0021) //*****************************************************
(0022)
(0023) unsigned char N=0;
(0024)
(0025)
(0026) //*****************************************************
(0027) //函数名称:void INT0_INIT(void)
(0028) //函数功能:int0初始化,上升沿产生中断,使能中断
(0029) //注意事项:未开总中断
(0030) //*****************************************************
(0031) void INT0_INIT(void)
(0032) {
(0033) MCUCR|=((1<<ISC01)|(1<<ISC00));
_INT0_INIT:
004C B785 IN R24,0x35
004D 6083 ORI R24,3
004E BF85 OUT 0x35,R24
(0034) GICR|=(1<<INT0);
004F B78B IN R24,0x3B
0050 6480 ORI R24,0x40
0051 BF8B OUT 0x3B,R24
0052 9508 RET
_INT0_INTERRUPT:
0053 938A ST R24,-Y
0054 939A ST R25,-Y
0055 B78F IN R24,0x3F
0056 938A ST R24,-Y
(0035) }
(0036) //*****************************************************
(0037) //函数名称:void INT0_INTERRUPT(void)
(0038) //函数功能:中断处理,N+1
(0039) //注意事项:
(0040) //*****************************************************
(0041) #pragma interrupt_handler INT0_INTERRUPT:2
(0042) void INT0_INTERRUPT(void)
(0043) {
(0044) N++;
0057 91800060 LDS R24,N
0059 5F8F SUBI R24,0xFF
005A 93800060 STS N,R24
(0045) NOP();
005C 0000 NOP
005D 9189 LD R24,Y+
005E BF8F OUT 0x3F,R24
005F 9199 LD R25,Y+
0060 9189 LD R24,Y+
0061 9518 RETI
(0046) }
(0047) //**********************************************************
(0048) //主函数
(0049) //**********************************************************
(0050) void main(void)
(0051) {
(0052) CLI();
_main:
0062 94F8 BCLR 7
(0053) INT0_INIT();
0063 DFE8 RCALL _INT0_INIT
(0054) SEI();
0064 9478 BSET 7
(0055) while(1)
FILE: <library>
0065 CFFF RJMP 0x0065
0066 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -