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

📄 avrx.lst

📁 AVR单片机专用的操作系统AVRX
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"avrx.c"
   2               		.arch atmega64
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  91               		.data
  92               	.LC0:
  93 0000 4B65 7931 		.string	"Key1\n"
  93      0A00 
  94               	.LC1:
  95 0006 4B65 7932 		.string	"Key2\n"
  95      0A00 
  96               	.LC2:
  97 000c 4B65 7933 		.string	"Key3\n"
  97      0A00 
  98               	.LC3:
  99 0012 4B65 7934 		.string	"Key4\n"
  99      0A00 
 100               	.LC4:
 101 0018 4B65 7935 		.string	"Key5\n"
 101      0A00 
 102               	.LC5:
 103 001e 4B65 7936 		.string	"Key6\n"
 103      0A00 
 104               	.LC6:
 105 0024 4B65 7937 		.string	"Key7\n"
 105      0A00 
 106               	.LC7:
 107 002a 4B65 7938 		.string	"Key8\n"
 107      0A00 
 108               	.LC8:
 109 0030 4B65 7939 		.string	"Key9\n"
 109      0A00 
 110               	.LC9:
 111 0036 4B65 7931 		.string	"Key10\n"
 111      300A 00
 112               	.LC10:
 113 003d 4B65 7931 		.string	"Key11\n"
 113      310A 00
 114               	.LC11:
 115 0044 4B65 7931 		.string	"Key12\n"
 115      320A 00
 116               	.LC12:
 117 004b 4B65 7931 		.string	"Key13\n"
 117      330A 00
 118               	.LC13:
 119 0052 4B65 7931 		.string	"Key14\n"
 119      340A 00
 120               	.LC14:
 121 0059 4B65 7931 		.string	"Key15\n"
 121      350A 00
 122               	.LC15:
 123 0060 4B65 7931 		.string	"Key16\n"
 123      360A 00
 124               		.text
 126               	.global	task3
 128               	task3:
   1:avrx.c        **** 
   2:avrx.c        **** #include"includes.h" 
   3:avrx.c        **** 
   4:avrx.c        **** #define LED1_ON  PORTA = 0b11111101
   5:avrx.c        **** #define LED2_ON  PORTA = 0b11111011
   6:avrx.c        **** #define LED3_ON  PORTA = 0b11110111
   7:avrx.c        **** 
   8:avrx.c        **** static void portinit(void);
   9:avrx.c        **** static void uart0_init(void);
  10:avrx.c        **** 
  11:avrx.c        **** AVRX_GCC_TASK(task1,20, 1);
  12:avrx.c        **** AVRX_GCC_TASK(task2,20, 2);
  13:avrx.c        **** AVRX_GCC_TASK(task3,20, 3);
  14:avrx.c        **** 
  15:avrx.c        **** /*********************************自定义变量*********************************************/
  16:avrx.c        **** TimerControlBlock   timer1,timer2;
  17:avrx.c        **** 
  18:avrx.c        **** /*****************************************************************************************/
  19:avrx.c        **** int main(void)                 
  20:avrx.c        **** {
  21:avrx.c        **** 	AvrXSetKernelStack(0);
  22:avrx.c        **** 	MCUCR = 0x00;
  23:avrx.c        ****     TCNT0 = 0xd5;
  24:avrx.c        ****     TCCR0 = 0x06;
  25:avrx.c        ****     TIMSK = 0x01;
  26:avrx.c        **** 	portinit();
  27:avrx.c        **** 	uart0_init();
  28:avrx.c        ****     AvrXRunTask(TCB(task1));        //任务1
  29:avrx.c        ****     AvrXRunTask(TCB(task2));        //任务2
  30:avrx.c        **** 	AvrXRunTask(TCB(task3));        //任务3
  31:avrx.c        ****     Epilog();                   
  32:avrx.c        ****     while(1);
  33:avrx.c        **** }
  34:avrx.c        **** 
  35:avrx.c        **** AVRX_SIGINT(SIG_OVERFLOW0)
  36:avrx.c        **** {
  37:avrx.c        ****     IntProlog();                // Switch to kernel stack/context
  38:avrx.c        ****     TCNT0 = 0xd5;
  39:avrx.c        ****     AvrXTimerHandler();         // Call Time queue manager
  40:avrx.c        ****     Epilog();                   // Return to tasks
  41:avrx.c        **** }
  42:avrx.c        **** 
  43:avrx.c        **** static void portinit(void)
  44:avrx.c        **** {
  45:avrx.c        **** 	PORTA = 0xFF;
  46:avrx.c        **** 	DDRA  = 0xFF;
  47:avrx.c        **** 	PORTB = 0xFF;
  48:avrx.c        **** 	DDRB  = 0xFF;
  49:avrx.c        **** 	PORTC = 0xFF; //m103 output only
  50:avrx.c        **** 	DDRC  = 0xFF;
  51:avrx.c        **** 	PORTD = 0xFF;
  52:avrx.c        **** 	DDRD  = 0xFF;
  53:avrx.c        **** 	PORTE = 0xFF;
  54:avrx.c        **** 	DDRE  = 0xFF;
  55:avrx.c        **** 	PORTF = 0xFF;
  56:avrx.c        **** 	DDRF  = 0xFF;
  57:avrx.c        **** 	PORTG = 0xFF;
  58:avrx.c        **** 	DDRG  = 0xFF;
  59:avrx.c        **** }
  60:avrx.c        **** 
  61:avrx.c        **** static void uart0_init(void)
  62:avrx.c        **** {
  63:avrx.c        ****  	 UCSR0B = 0x00; 
  64:avrx.c        ****  	 UCSR0A = 0x00;
  65:avrx.c        ****  	 UCSR0C = 0x06;
  66:avrx.c        ****  	 UBRR0L = 0x05; 
  67:avrx.c        ****  	 UBRR0H = 0x00; 
  68:avrx.c        ****  	 UCSR0B = 0x98;
  69:avrx.c        **** }   
  70:avrx.c        **** 
  71:avrx.c        **** 
  72:avrx.c        **** 
  73:avrx.c        **** NAKEDFUNC(task1)            //任务1:串口发送
  74:avrx.c        **** {
  75:avrx.c        **** 	while (1)
  76:avrx.c        **** 	{
  77:avrx.c        **** 		SendString("AVRX Test!\n");
  78:avrx.c        **** 		AvrXDelay(&timer1,1000);
  79:avrx.c        **** 	}
  80:avrx.c        **** }
  81:avrx.c        **** 
  82:avrx.c        **** 
  83:avrx.c        **** NAKEDFUNC(task2)           //任务2:LED灯闪烁 
  84:avrx.c        **** {
  85:avrx.c        ****     while (1)
  86:avrx.c        ****     {         
  87:avrx.c        **** 		LED1_ON;    
  88:avrx.c        **** 		AvrXDelay(&timer2,200);
  89:avrx.c        **** 		
  90:avrx.c        **** 		LED2_ON;
  91:avrx.c        **** 		AvrXDelay(&timer2,200);
  92:avrx.c        **** 		
  93:avrx.c        **** 		LED3_ON;
  94:avrx.c        **** 		AvrXDelay(&timer2,200);
  95:avrx.c        ****     }
  96:avrx.c        **** }
  97:avrx.c        **** 
  98:avrx.c        **** 
  99:avrx.c        **** NAKEDFUNC(task3)          //任务3:检测按键
 100:avrx.c        **** {
 129               	ue: frame size=0 */
 130               	/* prologue: naked */
 131               	/* prologue end (size=0) */
 132               	.L32:
 134               	.LM1:
 101:avrx.c        ****     while (1)
 102:avrx.c        **** 	{
 103:avrx.c        **** 		switch(Key())
 135               	Key
 136               		cpi r24,lo8(8)
 137 0000 0E94 0000 		breq .L11
 139 0006 01F0      	.LM2:
 140               		cpi r24,lo8(9)
 141               		brsh .L20
 142 0008 8930      		cpi r24,lo8(4)
 143 000a 00F4      		breq .L7
 144 000c 8430      		cpi r24,lo8(5)
 145 000e 01F0      		brsh .L21
 146 0010 8530      		cpi r24,lo8(2)
 147 0012 00F4      		breq .L5
 148 0014 8230      		cpi r24,lo8(3)
 149 0016 01F0      		brsh .L6
 150 0018 8330      		cpi r24,lo8(1)
 151 001a 00F4      		brne .L32
 152 001c 8130      		rjmp .L4
 153 001e 01F4      	.L21:
 154 0020 00C0      		cpi r24,lo8(6)
 155               		breq .L9
 156 0022 8630      		cpi r24,lo8(7)
 157 0024 01F0      		brsh .L10
 158 0026 8730      		rjmp .L28
 159 0028 00F4      	.L20:
 160 002a 00C0      		cpi r24,lo8(12)
 161               		breq .L15
 162 002c 8C30      		cpi r24,lo8(13)
 163 002e 01F0      		brsh .L22
 164 0030 8D30      		cpi r24,lo8(10)
 165 0032 00F4      		breq .L13
 166 0034 8A30      		cpi r24,lo8(11)
 167 0036 01F0      		brsh .L14
 168 0038 8B30      		rjmp .L29
 169 003a 00F4      	.L22:
 170 003c 00C0      		cpi r24,lo8(14)
 171               		breq .L17
 172 003e 8E30      		cpi r24,lo8(14)
 173 0040 01F0      		brlo .L16
 174 0042 8E30      		cpi r24,lo8(15)
 175 0044 00F0      		breq .L18
 176 0046 8F30      		cpi r24,lo8(16)
 177 0048 01F0      		brne .L32
 178 004a 8031      		rjmp .L19
 179 004c 01F4      	.L4:
 181               	.LM3:
 104:avrx.c        **** 		{
 105:avrx.c        **** 			case 1:
 106:avrx.c        **** 				SendString("Key1\n");
 182               	1
 183               	.L5:
 185 0052 90E0      	.LM4:
 186 0054 00C0      		ldi r24,lo8(.LC1)
 187               		ldi r25,hi8(.LC1)
 107:avrx.c        **** 			break;
 108:avrx.c        **** 			case 2:
 109:avrx.c        **** 				SendString("Key2\n");
 188               	.L31
 189               	.L6:
 191 0058 90E0      	.LM5:
 192 005a 00C0      		ldi r24,lo8(.LC2)
 193               		ldi r25,hi8(.LC2)
 110:avrx.c        **** 			break;
 111:avrx.c        **** 			case 3:
 112:avrx.c        **** 				SendString("Key3\n");
 194               	.L31
 195               	.L7:
 197 005e 90E0      	.LM6:
 198 0060 00C0      		ldi r24,lo8(.LC3)
 199               		ldi r25,hi8(.LC3)
 113:avrx.c        **** 			break;
 114:avrx.c        **** 			case 4:
 115:avrx.c        **** 				SendString("Key4\n");
 200               	.L31
 201               	.L28:
 203 0064 90E0      	.LM7:
 204 0066 00C0      		ldi r24,lo8(.LC4)
 205               		ldi r25,hi8(.LC4)
 116:avrx.c        **** 			break;
 117:avrx.c        **** 			case 5:
 118:avrx.c        **** 				SendString("Key5\n");
 206               	.L31
 207               	.L9:
 209 006a 90E0      	.LM8:
 210 006c 00C0      		ldi r24,lo8(.LC5)
 211               		ldi r25,hi8(.LC5)
 119:avrx.c        **** 			break;
 120:avrx.c        **** 			case 6:
 121:avrx.c        **** 				SendString("Key6\n");
 212               	.L31
 213               	.L10:
 215 0070 90E0      	.LM9:
 216 0072 00C0      		ldi r24,lo8(.LC6)
 217               		ldi r25,hi8(.LC6)
 122:avrx.c        **** 			break;
 123:avrx.c        **** 			case 7:
 124:avrx.c        **** 				SendString("Key7\n");
 218               	.L31
 219               	.L11:
 221 0076 90E0      	.LM10:
 222 0078 00C0      		ldi r24,lo8(.LC7)
 223               		ldi r25,hi8(.LC7)
 125:avrx.c        **** 			break;
 126:avrx.c        **** 			case 8:
 127:avrx.c        **** 				SendString("Key8\n");
 224               	.L31
 225               	.L29:
 227 007c 90E0      	.LM11:
 228 007e 00C0      		ldi r24,lo8(.LC8)
 229               		ldi r25,hi8(.LC8)
 128:avrx.c        **** 			break;
 129:avrx.c        **** 			case 9:
 130:avrx.c        **** 				SendString("Key9\n");
 230               	.L31
 231               	.L13:
 233 0082 90E0      	.LM12:
 234 0084 00C0      		ldi r24,lo8(.LC9)
 235               		ldi r25,hi8(.LC9)
 131:avrx.c        **** 			break;
 132:avrx.c        **** 			case 10:
 133:avrx.c        **** 				SendString("Key10\n");
 236               	.L31
 237               	.L14:
 239 0088 90E0      	.LM13:
 240 008a 00C0      		ldi r24,lo8(.LC10)
 241               		ldi r25,hi8(.LC10)
 134:avrx.c        **** 			break;

⌨️ 快捷键说明

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