📄 中断按键.lis
字号:
.module _中断按键.c
.area data(ram, con, rel)
0000 _LED_data::
0000 .blkb 2
.area idata
0000 C0F9 .byte 192,249
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 A4B0 .byte 164,176
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 9992 .byte 153,146
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 82F8 .byte 130,248
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 8090 .byte 128,144
.area data(ram, con, rel)
000A .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/数码管.h
000A .dbsym e LED_data _LED_data A[10:10]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/数码管.h
0000 .dbfunc e LED_init _LED_init fV
.even
0000 _LED_init::
0000 .dbline -1
0000 .dbline 18
0000 ; //内部晶振 8M
0000 ; //包含所需头文件
0000 ; #include <ioM16v.h>
0000 ; #include <macros.h>
0000 ; #include"数码管.h"
0000 ; #include"delay.h"
0000 ;
0000 ;
0000 ;
0000 ; /*------宏定义------*/
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; /*********标志位************************************************/
0000 ; #define start 0x0;
0000 ; #define stop 0x1;
0000 ; //----------函数申明-------------------------
0000 ; /***************************************************************/
0000 .dbline 19
0000 ; //void LED_init(void); //LED初始化
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 20
0004 ; //void show_LED(uchar data1,uchar data2,uchar data3,uchar data4); //LED显示
0004 87B3 in R24,0x17
0006 8F6F ori R24,255
0008 87BB out 0x17,R24
000A .dbline 21
000A ; //void LED_run(void) ;
000A 2224 clr R2
000C 2BBA out 0x1b,R2
000E .dbline 22
000E ; /****************************************************************/
000E 28B2 in R2,0x18
0010 28BA out 0x18,R2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e show_LED _show_LED fV
0014 ; data4 -> y+6
0014 ; data3 -> y+4
0014 ; data2 -> R20
0014 ; data1 -> R22
.even
0014 _show_LED::
0014 0E940000 xcall push_gset2
0018 422F mov R20,R18
001A 602F mov R22,R16
001C .dbline -1
001C .dbline 25
001C ; /*********标志位************************************************/
001C ; uchar LED_ret;
001C ;
001C .dbline 26
001C ; uchar a,b, c,d;//全局变量定义
001C 80E0 ldi R24,<_LED_data
001E 90E0 ldi R25,>_LED_data
0020 E62F mov R30,R22
0022 FF27 clr R31
0024 E80F add R30,R24
0026 F91F adc R31,R25
0028 2080 ldd R2,z+0
002A 2BBA out 0x1b,R2
002C .dbline 27
002C ;
002C 87EF ldi R24,247
002E 88BB out 0x18,R24
0030 .dbline 28
0030 ; //端口初始化
0030 01E0 ldi R16,1
0032 10E0 ldi R17,0
0034 33D0 xcall _DelayMS
0036 .dbline 30
0036 ; void port_init(void)
0036 ; {
0036 80E0 ldi R24,<_LED_data
0038 90E0 ldi R25,>_LED_data
003A E42F mov R30,R20
003C FF27 clr R31
003E E80F add R30,R24
0040 F91F adc R31,R25
0042 2080 ldd R2,z+0
0044 2BBA out 0x1b,R2
0046 .dbline 31
0046 ; PORTA = 0x00;//设置A口置1
0046 8BEF ldi R24,251
0048 88BB out 0x18,R24
004A .dbline 32
004A ; DDRA = 0x00;//设置A口输入
004A 01E0 ldi R16,1
004C 10E0 ldi R17,0
004E 26D0 xcall _DelayMS
0050 .dbline 34
0050 ; PORTB = 0x00;
0050 ; DDRB = 0x00;
0050 80E0 ldi R24,<_LED_data
0052 90E0 ldi R25,>_LED_data
0054 EC81 ldd R30,y+4
0056 FF27 clr R31
0058 E80F add R30,R24
005A F91F adc R31,R25
005C 2080 ldd R2,z+0
005E 2BBA out 0x1b,R2
0060 .dbline 35
0060 ; PORTC = 0x00;
0060 8DEF ldi R24,253
0062 88BB out 0x18,R24
0064 .dbline 36
0064 ; DDRC = 0x00;
0064 01E0 ldi R16,1
0066 10E0 ldi R17,0
0068 19D0 xcall _DelayMS
006A .dbline 38
006A ; PORTD = 0x0c;
006A ; DDRD = 0x00;
006A 80E0 ldi R24,<_LED_data
006C 90E0 ldi R25,>_LED_data
006E EE81 ldd R30,y+6
0070 FF27 clr R31
0072 E80F add R30,R24
0074 F91F adc R31,R25
0076 2080 ldd R2,z+0
0078 2BBA out 0x1b,R2
007A .dbline 39
007A ; }
007A 8EEF ldi R24,254
007C 88BB out 0x18,R24
007E .dbline 40
007E ;
007E 01E0 ldi R16,1
0080 10E0 ldi R17,0
0082 0CD0 xcall _DelayMS
0084 .dbline -2
0084 L2:
0084 0E940000 xcall pop_gset2
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym l data4 6 c
008A .dbsym l data3 4 c
008A .dbsym r data2 20 c
008A .dbsym r data1 22 c
008A .dbend
008A .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/delay.h
008A .dbfunc e DelayUS _DelayUS fV
008A ; time -> R16,R17
.even
008A _DelayUS::
008A .dbline -1
008A .dbline 9
008A 02C0 xjmp L5
008C L4:
008C .dbline 11
008C 0150 subi R16,1
008E 1040 sbci R17,0
0090 L5:
0090 .dbline 10
0090 81E0 ldi R24,1
0092 90E0 ldi R25,0
0094 8017 cp R24,R16
0096 9107 cpc R25,R17
0098 C8F3 brlo L4
009A .dbline -2
009A L3:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbsym r time 16 i
009C .dbend
009C .dbfunc e DelayMS _DelayMS fV
009C ; i -> R20,R21
009C ; time -> R16,R17
.even
009C _DelayMS::
009C 0E940000 xcall push_gset1
00A0 .dbline -1
00A0 .dbline 20
00A0 09C0 xjmp L9
00A2 L8:
00A2 .dbline 23
00A2 .dbline 24
00A2 41E0 ldi R20,1
00A4 50E0 ldi R21,0
00A6 02C0 xjmp L14
00A8 L11:
00A8 .dbline 25
00A8 L12:
00A8 .dbline 24
00A8 4F5F subi R20,255 ; offset = 1
00AA 5F4F sbci R21,255
00AC L14:
00AC .dbline 24
00AC 4637 cpi R20,118
00AE E4E0 ldi R30,4
00B0 5E07 cpc R21,R30
00B2 D0F3 brlo L11
00B4 .dbline 26
00B4 L9:
00B4 .dbline 22
00B4 1801 movw R2,R16
00B6 0150 subi R16,1
00B8 1040 sbci R17,0
00BA 2220 tst R2
00BC 91F7 brne L8
00BE 3320 tst R3
00C0 81F7 brne L8
00C2 X0:
00C2 .dbline -2
00C2 L7:
00C2 0E940000 xcall pop_gset1
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbsym r i 20 i
00C8 .dbsym r time 16 i
00C8 .dbend
00C8 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键\中断按键.c
00C8 .dbfunc e port_init _port_init fV
.even
00C8 _port_init::
00C8 .dbline -1
00C8 .dbline 30
00C8 .dbline 31
00C8 2224 clr R2
00CA 2BBA out 0x1b,R2
00CC .dbline 32
00CC 2ABA out 0x1a,R2
00CE .dbline 33
00CE 28BA out 0x18,R2
00D0 .dbline 34
00D0 27BA out 0x17,R2
00D2 .dbline 35
00D2 25BA out 0x15,R2
00D4 .dbline 36
00D4 24BA out 0x14,R2
00D6 .dbline 37
00D6 8CE0 ldi R24,12
00D8 82BB out 0x12,R24
00DA .dbline 38
00DA 21BA out 0x11,R2
00DC .dbline -2
00DC L15:
00DC .dbline 0 ; func end
00DC 0895 ret
00DE .dbend
00DE .dbfunc e int_init _int_init fV
.even
00DE _int_init::
00DE .dbline -1
00DE .dbline 44
00DE ;
00DE ; //外中断初始化
00DE ; void int_init(void)
00DE ; {
00DE .dbline 45
00DE ; MCUCR |= 0x0a;//INT0、INT1下降沿触发中断
00DE 85B7 in R24,0x35
00E0 8A60 ori R24,10
00E2 85BF out 0x35,R24
00E4 .dbline 46
00E4 ; MCUCSR|= 0x00;//关闭INT2
00E4 24B6 in R2,0x34
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -