⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.s

📁 AVR单片机 C语言程序设计经典实用
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module misc.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
	.dbfunc e LED_OFF _LED_OFF fV
;          Index -> R20
	.even
_LED_OFF::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 24
; //******************************************************************************
; // File Name : Gpio.c
; // Author    : Steaven
; // Created   : 2008-06-09
; // Modified  : 
; // Revision  : V0.0
; //******************************************************************************
; 
; #include "app.h"
; 
; //local function(s) declaration
; INT16U swGet_Key1(void);
; INT16U swGet_Key2(void);
; INT16U swGet_Key3(void);
; INT16U swGet_Key4(void);
; 
; //***************************************************************
; // Function    : LED_OFF
; // Input       : Index - LED Index,from 1 to 4
; // Output      : none
; // Description : Turn off specific LED indexed by Index variable
; //***************************************************************
; void LED_OFF(INT8U Index)
; {
	.dbline 25
;     PORTD |= (1 << Index);
	ldi R16,1
	mov R17,R20
	xcall lsl8
	in R2,0x12
	or R2,R16
	out 0x12,R2
	.dbline -2
	.dbline 26
; }
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r Index 20 c
	.dbend
	.dbfunc e LED_ON _LED_ON fV
;          Index -> R20
	.even
_LED_ON::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 35
; 
; //***************************************************************
; // Function    : LED_ON
; // Input       : Index - LED Index,from 1 to 4
; // Output      : none
; // Description : Turn on specific LED indexed by Index variable
; //***************************************************************
; void LED_ON(INT8U Index)
; {
	.dbline 36
;     PORTD &= ~(1 << Index);
	ldi R16,1
	mov R17,R20
	xcall lsl8
	mov R2,R16
	com R2
	in R3,0x12
	and R3,R2
	out 0x12,R3
	.dbline -2
	.dbline 37
; }
L2:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r Index 20 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
L4:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
L5:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
L6:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
L7:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
	.dbfunc e LED_TOGGLE _LED_TOGGLE fV
	.dbsym s bLED4_Status L7 c
	.dbsym s bLED3_Status L6 c
	.dbsym s bLED2_Status L5 c
	.dbsym s bLED1_Status L4 c
;          Index -> R20
	.even
_LED_TOGGLE::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 46
; 
; //***************************************************************
; // Function    : LED_ON
; // Input       : Index - LED Index,from 1 to 4
; // Output      : none
; // Description : Turn on specific LED indexed by Index variable
; //***************************************************************
; void LED_TOGGLE(INT8U Index)
; {
	.dbline 51
;     static INT8U bLED1_Status = cOFF_Status;
;     static INT8U bLED2_Status = cOFF_Status;
;     static INT8U bLED3_Status = cOFF_Status;
;     static INT8U bLED4_Status = cOFF_Status;
;     switch(Index)
	clr R21
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L11
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L16
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L21
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	brne X1
	xjmp L26
X1:
	xjmp L9
X0:
	.dbline 52
;     {
L11:
	.dbline 54
;         case cLED1 :
;         {
	.dbline 55
;             if(bLED1_Status == cOFF_Status)
	lds R2,L4
	tst R2
	brne L12
	.dbline 56
;             {
	.dbline 57
;                 LED_ON(cLED1);
	ldi R16,4
	xcall _LED_ON
	.dbline 58
;                 bLED1_Status = cON_Status;
	ldi R24,1
	sts L4,R24
	.dbline 59
;             }
	xjmp L9
L12:
	.dbline 60
;             else if(bLED1_Status = cON_Status)
	ldi R24,1
	sts L4,R24
	tst R24
	brne X2
	xjmp L9
X2:
	.dbline 61
;             {
	.dbline 62
;                 LED_OFF(cLED1);
	ldi R16,4
	xcall _LED_OFF
	.dbline 63
;                 bLED1_Status = cOFF_Status;
	clr R2
	sts L4,R2
	.dbline 64
;             }
	.dbline 65
;             break;
	xjmp L9
L16:
	.dbline 68
;         }
;         case cLED2 :
;         {
	.dbline 69
;             if(bLED2_Status == cOFF_Status)
	lds R2,L5
	tst R2
	brne L17
	.dbline 70
;             {
	.dbline 71
;                 LED_ON(cLED2);
	ldi R16,5
	xcall _LED_ON
	.dbline 72
;                 bLED2_Status = cON_Status;
	ldi R24,1
	sts L5,R24
	.dbline 73
;             }
	xjmp L9
L17:
	.dbline 74
;             else if(bLED2_Status = cON_Status)
	ldi R24,1
	sts L5,R24
	tst R24
	breq L9
	.dbline 75
;             {
	.dbline 76
;                 LED_OFF(cLED2);
	ldi R16,5
	xcall _LED_OFF
	.dbline 77
;                 bLED2_Status = cOFF_Status;
	clr R2
	sts L5,R2
	.dbline 78
;             }
	.dbline 79
;             break;
	xjmp L9
L21:
	.dbline 82
;         }
;         case cLED3 :
;         {
	.dbline 83
;             if(bLED3_Status == cOFF_Status)
	lds R2,L6
	tst R2
	brne L22
	.dbline 84
;             {
	.dbline 85
;                 LED_ON(cLED3);
	ldi R16,6
	xcall _LED_ON
	.dbline 86
;                 bLED3_Status = cON_Status;
	ldi R24,1
	sts L6,R24
	.dbline 87
;             }
	xjmp L9
L22:
	.dbline 88
;             else if(bLED3_Status = cON_Status)
	ldi R24,1
	sts L6,R24
	tst R24
	breq L9
	.dbline 89
;             {
	.dbline 90
;                 LED_OFF(cLED3);
	ldi R16,6
	xcall _LED_OFF
	.dbline 91
;                 bLED3_Status = cOFF_Status;
	clr R2
	sts L6,R2
	.dbline 92
;             }
	.dbline 93
;             break;
	xjmp L9
L26:
	.dbline 96
;         }
;         case cLED4 :
;         {
	.dbline 97
;             if(bLED4_Status == cOFF_Status)
	lds R2,L7
	tst R2
	brne L27
	.dbline 98
;             {
	.dbline 99
;                 LED_ON(cLED4);
	ldi R16,7
	xcall _LED_ON
	.dbline 100
;                 bLED4_Status = cON_Status;
	ldi R24,1
	sts L7,R24
	.dbline 101
;             }
	xjmp L9
L27:
	.dbline 102
	ldi R24,1
	sts L7,R24
	tst R24
	breq L9
	.dbline 103
	.dbline 104
	ldi R16,7
	xcall _LED_OFF
	.dbline 105
	clr R2
	sts L7,R2
	.dbline 106
	.dbline 107
	.dbline 109
L9:
	.dbline -2
	.dbline 111
;             else if(bLED4_Status = cON_Status)
;             {
;                 LED_OFF(cLED4);
;                 bLED4_Status = cOFF_Status;
;             }
;             break;
;         }
;         default : break;
;     }
; }
L3:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r Index 20 c
	.dbend
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
L32:
	.blkb 2
	.area idata
	.word 1
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
	.dbfunc e swGet_Key1 _swGet_Key1 fi
	.dbsym s wKeyStatus L32 i
	.even
_swGet_Key1::
	.dbline -1
	.dbline 120
; 
; //****************************************************************
; // Function    : swGet_Key1
; // Input       : none
; // Output      : true - Key1 active; false - Key1 - passitive
; // Description : Key1 Detection,rising edge active
; //****************************************************************
; INT16U swGet_Key1(void)
; {
	.dbline 122
; 	static INT16U wKeyStatus = 1;
; 	if(wKeyStatus == 1)
	lds R24,L32
	lds R25,L32+1
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne L33
	.dbline 123
; 	{
	.dbline 124
; 		if((PINB & (1 << cKey1)) == 0) //Key Pressed
	sbic 0x16,0
	rjmp L34
	.dbline 125
; 		{
	.dbline 126
; 			wKeyStatus = 0;
	clr R2
	clr R3
	sts L32+1,R3
	sts L32,R2
	.dbline 127
; 		}
	.dbline 128
; 	}
	xjmp L34
L33:
	.dbline 129
; 	else if(wKeyStatus == 0)
	lds R2,L32
	lds R3,L32+1
	tst R2
	brne L37
	tst R3
	brne L37
X3:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -