📄 misc.lis
字号:
.module misc.c
.area text(rom, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0000 .dbfunc e LED_OFF _LED_OFF fV
0000 ; Index -> R20
.even
0000 _LED_OFF::
0000 0E940000 xcall push_gset1
0004 402F mov R20,R16
0006 .dbline -1
0006 .dbline 24
0006 ; //******************************************************************************
0006 ; // File Name : Gpio.c
0006 ; // Author : Steaven
0006 ; // Created : 2008-06-09
0006 ; // Modified :
0006 ; // Revision : V0.0
0006 ; //******************************************************************************
0006 ;
0006 ; #include "app.h"
0006 ;
0006 ; //local function(s) declaration
0006 ; INT16U swGet_Key1(void);
0006 ; INT16U swGet_Key2(void);
0006 ; INT16U swGet_Key3(void);
0006 ; INT16U swGet_Key4(void);
0006 ;
0006 ; //***************************************************************
0006 ; // Function : LED_OFF
0006 ; // Input : Index - LED Index,from 1 to 4
0006 ; // Output : none
0006 ; // Description : Turn off specific LED indexed by Index variable
0006 ; //***************************************************************
0006 ; void LED_OFF(INT8U Index)
0006 ; {
0006 .dbline 25
0006 ; PORTD |= (1 << Index);
0006 01E0 ldi R16,1
0008 142F mov R17,R20
000A 0E940000 xcall lsl8
000E 22B2 in R2,0x12
0010 202A or R2,R16
0012 22BA out 0x12,R2
0014 .dbline -2
0014 .dbline 26
0014 ; }
0014 L1:
0014 0E940000 xcall pop_gset1
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r Index 20 c
001A .dbend
001A .dbfunc e LED_ON _LED_ON fV
001A ; Index -> R20
.even
001A _LED_ON::
001A 0E940000 xcall push_gset1
001E 402F mov R20,R16
0020 .dbline -1
0020 .dbline 35
0020 ;
0020 ; //***************************************************************
0020 ; // Function : LED_ON
0020 ; // Input : Index - LED Index,from 1 to 4
0020 ; // Output : none
0020 ; // Description : Turn on specific LED indexed by Index variable
0020 ; //***************************************************************
0020 ; void LED_ON(INT8U Index)
0020 ; {
0020 .dbline 36
0020 ; PORTD &= ~(1 << Index);
0020 01E0 ldi R16,1
0022 142F mov R17,R20
0024 0E940000 xcall lsl8
0028 202E mov R2,R16
002A 2094 com R2
002C 32B2 in R3,0x12
002E 3220 and R3,R2
0030 32BA out 0x12,R3
0032 .dbline -2
0032 .dbline 37
0032 ; }
0032 L2:
0032 0E940000 xcall pop_gset1
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r Index 20 c
0038 .dbend
.area data(ram, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0000 L4:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0001 L5:
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0002 L6:
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0003 L7:
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
.area text(rom, con, rel)
0038 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
0038 .dbfunc e LED_TOGGLE _LED_TOGGLE fV
0038 .dbsym s bLED4_Status L7 c
0038 .dbsym s bLED3_Status L6 c
0038 .dbsym s bLED2_Status L5 c
0038 .dbsym s bLED1_Status L4 c
0038 ; Index -> R20
.even
0038 _LED_TOGGLE::
0038 0E940000 xcall push_gset1
003C 402F mov R20,R16
003E .dbline -1
003E .dbline 46
003E ;
003E ; //***************************************************************
003E ; // Function : LED_ON
003E ; // Input : Index - LED Index,from 1 to 4
003E ; // Output : none
003E ; // Description : Turn on specific LED indexed by Index variable
003E ; //***************************************************************
003E ; void LED_TOGGLE(INT8U Index)
003E ; {
003E .dbline 51
003E ; static INT8U bLED1_Status = cOFF_Status;
003E ; static INT8U bLED2_Status = cOFF_Status;
003E ; static INT8U bLED3_Status = cOFF_Status;
003E ; static INT8U bLED4_Status = cOFF_Status;
003E ; switch(Index)
003E 5527 clr R21
0040 4430 cpi R20,4
0042 E0E0 ldi R30,0
0044 5E07 cpc R21,R30
0046 71F0 breq L11
0048 4530 cpi R20,5
004A E0E0 ldi R30,0
004C 5E07 cpc R21,R30
004E 01F1 breq L16
0050 4630 cpi R20,6
0052 E0E0 ldi R30,0
0054 5E07 cpc R21,R30
0056 89F1 breq L21
0058 4730 cpi R20,7
005A E0E0 ldi R30,0
005C 5E07 cpc R21,R30
005E 09F4 brne X1
0060 41C0 xjmp L26
0062 X1:
0062 54C0 xjmp L9
0064 X0:
0064 .dbline 52
0064 ; {
0064 L11:
0064 .dbline 54
0064 ; case cLED1 :
0064 ; {
0064 .dbline 55
0064 ; if(bLED1_Status == cOFF_Status)
0064 20900000 lds R2,L4
0068 2220 tst R2
006A 31F4 brne L12
006C .dbline 56
006C ; {
006C .dbline 57
006C ; LED_ON(cLED1);
006C 04E0 ldi R16,4
006E D5DF xcall _LED_ON
0070 .dbline 58
0070 ; bLED1_Status = cON_Status;
0070 81E0 ldi R24,1
0072 80930000 sts L4,R24
0076 .dbline 59
0076 ; }
0076 4AC0 xjmp L9
0078 L12:
0078 .dbline 60
0078 ; else if(bLED1_Status = cON_Status)
0078 81E0 ldi R24,1
007A 80930000 sts L4,R24
007E 8823 tst R24
0080 09F4 brne X2
0082 44C0 xjmp L9
0084 X2:
0084 .dbline 61
0084 ; {
0084 .dbline 62
0084 ; LED_OFF(cLED1);
0084 04E0 ldi R16,4
0086 BCDF xcall _LED_OFF
0088 .dbline 63
0088 ; bLED1_Status = cOFF_Status;
0088 2224 clr R2
008A 20920000 sts L4,R2
008E .dbline 64
008E ; }
008E .dbline 65
008E ; break;
008E 3EC0 xjmp L9
0090 L16:
0090 .dbline 68
0090 ; }
0090 ; case cLED2 :
0090 ; {
0090 .dbline 69
0090 ; if(bLED2_Status == cOFF_Status)
0090 20900100 lds R2,L5
0094 2220 tst R2
0096 31F4 brne L17
0098 .dbline 70
0098 ; {
0098 .dbline 71
0098 ; LED_ON(cLED2);
0098 05E0 ldi R16,5
009A BFDF xcall _LED_ON
009C .dbline 72
009C ; bLED2_Status = cON_Status;
009C 81E0 ldi R24,1
009E 80930100 sts L5,R24
00A2 .dbline 73
00A2 ; }
00A2 34C0 xjmp L9
00A4 L17:
00A4 .dbline 74
00A4 ; else if(bLED2_Status = cON_Status)
00A4 81E0 ldi R24,1
00A6 80930100 sts L5,R24
00AA 8823 tst R24
00AC 79F1 breq L9
00AE .dbline 75
00AE ; {
00AE .dbline 76
00AE ; LED_OFF(cLED2);
00AE 05E0 ldi R16,5
00B0 A7DF xcall _LED_OFF
00B2 .dbline 77
00B2 ; bLED2_Status = cOFF_Status;
00B2 2224 clr R2
00B4 20920100 sts L5,R2
00B8 .dbline 78
00B8 ; }
00B8 .dbline 79
00B8 ; break;
00B8 29C0 xjmp L9
00BA L21:
00BA .dbline 82
00BA ; }
00BA ; case cLED3 :
00BA ; {
00BA .dbline 83
00BA ; if(bLED3_Status == cOFF_Status)
00BA 20900200 lds R2,L6
00BE 2220 tst R2
00C0 31F4 brne L22
00C2 .dbline 84
00C2 ; {
00C2 .dbline 85
00C2 ; LED_ON(cLED3);
00C2 06E0 ldi R16,6
00C4 AADF xcall _LED_ON
00C6 .dbline 86
00C6 ; bLED3_Status = cON_Status;
00C6 81E0 ldi R24,1
00C8 80930200 sts L6,R24
00CC .dbline 87
00CC ; }
00CC 1FC0 xjmp L9
00CE L22:
00CE .dbline 88
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -