📄 test2.lis
字号:
.module test2.c
.area text(rom, con, rel)
0000 .dbfile G:\IccPro\ucos_m8_icc\test\test2.c
0000 .dbfunc e uart0_init _uart0_init fV
.even
0000 _uart0_init::
0000 .dbline -1
0000 .dbline 29
0000 ;
0000 ; #define Test1_GLOBALS
0000 ; #include "includes.h"
0000 ;
0000 ; //******************************************************************************
0000 ; // Constants
0000 ; #define TaskStartPrio 10 // Task-Prioritaeten
0000 ; //*****************************************************************************
0000 ; // Variablen
0000 ; INT8U display[5];
0000 ; INT8U h,m,s,state;
0000 ; OS_STK Task1Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
0000 ; OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE];
0000 ; //ICC-AVR application builder : 2003-12-28 21:52:56
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include <stdio.h>
0000 ;
0000 ;
0000 ; //UART0 initialisation
0000 ; // desired baud rate: 9600
0000 ; // actual: baud rate:9615 (0.2%)
0000 ; // char size: 8 bit
0000 ; // parity: Disabled
0000 ; void uart0_init(void)
0000 ; {
0000 .dbline 30
0000 ; UCSRB = 0x00; //disable while setting baud rate
0000 2224 clr R2
0002 2AB8 out 0xa,R2
0004 .dbline 31
0004 ; UCSRA = 0x00;
0004 2BB8 out 0xb,R2
0006 .dbline 32
0006 ; UCSRC = 0x86;
0006 86E8 ldi R24,134
0008 80BD out 0x20,R24
000A .dbline 33
000A ; UBRRL = 0x33; //set baud rate lo
000A 83E3 ldi R24,51
000C 89B9 out 0x9,R24
000E .dbline 34
000E ; UBRRH = 0x00; //set baud rate hi
000E 20BC out 0x20,R2
0010 .dbline 35
0010 ; UCSRB = 0x08;
0010 88E0 ldi R24,8
0012 8AB9 out 0xa,R24
0014 .dbline -2
0014 L2:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e TC2_Init _TC2_Init fV
.even
0016 _TC2_Init::
0016 .dbline -1
0016 .dbline 45
0016 ; }
0016 ;
0016 ; //*****************************************************************************
0016 ; // Prototypes
0016 ;
0016 ; //*****************************************************************************
0016 ; // TickISR
0016 ; //*****************************************************************************
0016 ; // Init Timer/Counter2 fuer Takterzeugung
0016 ; void TC2_Init (void){
0016 .dbline 49
0016 ; /* Only uses TIMER2 overflow for tick interrupt. Timer compare
0016 ; * can also be used.
0016 ; */
0016 ; TIMSK &= ~(BIT(TOIE2)/* | BIT(OCIE2) */); //disable TC2 interrupts
0016 89B7 in R24,0x39
0018 8F7B andi R24,191
001A 89BF out 0x39,R24
001C .dbline 50
001C ; TCCR2 = 0x00; // interner Takt, /1024
001C 2224 clr R2
001E 25BC out 0x25,R2
0020 .dbline 51
0020 ; TCNT2 = 0; // Counter ruecksetzen, 2ms @ 8MHz
0020 24BC out 0x24,R2
0022 .dbline 52
0022 ; TCCR2 = 0x04; // 64
0022 84E0 ldi R24,4
0024 85BD out 0x25,R24
0026 .dbline 54
0026 ; // OCR2 = 180; // OutputCompareRegister
0026 ; TIMSK |= BIT(TOIE2); // enable OVF-interrupt
0026 89B7 in R24,0x39
0028 8064 ori R24,64
002A 89BF out 0x39,R24
002C .dbline 57
002C ; //TIMSK |= OCIE2; // enable COMP-interrupt
002C ;
002C ; SEI(); // enable global interrupt
002C 7894 sei
002E .dbline -2
002E L3:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbend
.area vector(rom, abs)
.org 8
0008 00C0 rjmp _OSTickISR
.area text(rom, con, rel)
0030 .dbfile G:\IccPro\ucos_m8_icc\test\test2.c
0030 .dbfunc e main _main fV
.even
0030 _main::
0030 2397 sbiw R28,3
0032 .dbline -1
0032 .dbline 70
0032 ; }
0032 ;
0032 ; //*****************************************************************************
0032 ; // Interrupt Timer/Counter0 Overflow
0032 ; // OVF_Takt: 4MHz / 1024 / 39 = 10ms
0032 ; #pragma interrupt_handler OSTickISR:5
0032 ;
0032 ; void Task1(void *pdata);
0032 ; void Task2(void *pdata);
0032 ;
0032 ; //*****************************************************************************
0032 ; // Start
0032 ; void main(void){
0032 .dbline 71
0032 ; OSInit(); // OS init
0032 00D0 rcall _OSInit
0034 .dbline 72
0034 ; uart0_init();
0034 E5DF rcall _uart0_init
0036 .dbline 73
0036 ; puts("ATmega8 uc/os-II Test!");
0036 00E0 ldi R16,<L5
0038 10E0 ldi R17,>L5
003A 00D0 rcall _puts
003C .dbline 74
003C ; putchar(0x0d);
003C 0DE0 ldi R16,13
003E 00D0 rcall _putchar
0040 .dbline 75
0040 ; putchar(0x0a);
0040 0AE0 ldi R16,10
0042 00D0 rcall _putchar
0044 .dbline 77
0044 ;
0044 ; OSTaskCreate(Task1, (void *)0, &Task1Stack[OS_TASK_DEF_STK_SIZE-1], 7);
0044 87E0 ldi R24,7
0046 8A83 std y+2,R24
0048 80E0 ldi R24,<_Task1Stack+99
004A 90E0 ldi R25,>_Task1Stack+99
004C 9983 std y+1,R25
004E 8883 std y+0,R24
0050 2227 clr R18
0052 3327 clr R19
0054 00E0 ldi R16,<PL_Task1
0056 10E0 ldi R17,>PL_Task1
0058 00D0 rcall _OSTaskCreate
005A .dbline 79
005A ;
005A ; OSTaskCreate(Task2, (void *)0, &Task2Stack[OS_TASK_DEF_STK_SIZE-1], 8);
005A 88E0 ldi R24,8
005C 8A83 std y+2,R24
005E 80E0 ldi R24,<_Task2Stack+99
0060 90E0 ldi R25,>_Task2Stack+99
0062 9983 std y+1,R25
0064 8883 std y+0,R24
0066 2227 clr R18
0068 3327 clr R19
006A 00E0 ldi R16,<PL_Task2
006C 10E0 ldi R17,>PL_Task2
006E 00D0 rcall _OSTaskCreate
0070 .dbline 81
0070 ; // init und start tick
0070 ; TC2_Init(); // Timer/Counter#2 Overflow and Comp init
0070 D2DF rcall _TC2_Init
0072 .dbline 82
0072 ; OSStart(); // start multitasking
0072 00D0 rcall _OSStart
0074 .dbline -2
0074 L4:
0074 2396 adiw R28,3
0076 .dbline 0 ; func end
0076 0895 ret
0078 .dbend
0078 .dbfunc e Task1 _Task1 fV
0078 ; key2 -> R12
0078 ; i -> R14
0078 ; key1 -> y+0
0078 ; data -> R10,R11
.even
0078 _Task1::
0078 00D0 rcall push_gset5x
007A 5801 movw R10,R16
007C 2197 sbiw R28,1
007E .dbline -1
007E .dbline 86
007E ; }
007E ;
007E ; //*****************************************************************************
007E ; void Task1(void *data){
007E .dbline 88
007E ; unsigned char i,key1,key2;
007E ; data = data;
007E .dbline 89
007E ; PORTD |= 0x1C; // key
007E 82B3 in R24,0x12
0080 8C61 ori R24,28
0082 82BB out 0x12,R24
0084 .dbline 90
0084 ; DDRD &= ~0x1C;
0084 81B3 in R24,0x11
0086 837E andi R24,227
0088 81BB out 0x11,R24
008A .dbline 91
008A ; PORTD |= 0x20; // bell
008A 959A sbi 0x12,5
008C .dbline 92
008C ; DDRD |= 0x20;
008C 8D9A sbi 0x11,5
008E .dbline 93
008E ; init164(); // 显示 初始化
008E 00D0 rcall _init164
0090 .dbline 94
0090 ; state = 1;
0090 81E0 ldi R24,1
0092 8093C800 sts _state,R24
0096 .dbline 95
0096 L9:
0096 .dbline 95
0096 ; for (;;){
0096 .dbline 97
0096 ; // key
0096 ; key1 = PIND & 0x1C;
0096 80B3 in R24,0x10
0098 8C71 andi R24,28
009A 8883 std y+0,R24
009C .dbline 98
009C ; if(key1 == 0x1C){
009C 8C31 cpi R24,28
009E 59F5 brne L13
00A0 .dbline 98
00A0 .dbline 99
00A0 ; PORTD &= ~0x20;
00A0 9598 cbi 0x12,5
00A2 .dbline 100
00A2 ; if(key2 == 0x0C){
00A2 8C2D mov R24,R12
00A4 8C30 cpi R24,12
00A6 31F4 brne L15
00A8 .dbline 100
00A8 .dbline 101
00A8 ; state ^= 0x01;
00A8 81E0 ldi R24,1
00AA 2090C800 lds R2,_state
00AE 2826 eor R2,R24
00B0 2092C800 sts _state,R2
00B4 .dbline 102
00B4 ; }
00B4 L15:
00B4 .dbline 103
00B4 ; if(state == 0){
00B4 2090C800 lds R2,_state
00B8 2220 tst R2
00BA F1F4 brne L14
00BC .dbline 103
00BC .dbline 104
00BC ; if(key2 == 0x18){
00BC 8C2D mov R24,R12
00BE 8831 cpi R24,24
00C0 59F4 brne L19
00C2 .dbline 104
00C2 .dbline 105
00C2 ; if(++s == 60) s = 0;
00C2 8091C900 lds R24,_s
00C6 8F5F subi R24,255 ; addi 1
00C8 282E mov R2,R24
00CA 2092C900 sts _s,R2
00CE 8C33 cpi R24,60
00D0 19F4 brne L21
00D2 .dbline 105
00D2 2224 clr R2
00D4 2092C900 sts _s,R2
00D8 L21:
00D8 .dbline 106
00D8 ; }
00D8 L19:
00D8 .dbline 107
00D8 ; if(key2 == 0x14){
00D8 8C2D mov R24,R12
00DA 8431 cpi R24,20
00DC 69F4 brne L14
00DE .dbline 107
00DE .dbline 108
00DE ; if(++m == 60) m = 0;
00DE 8091CA00 lds R24,_m
00E2 8F5F subi R24,255 ; addi 1
00E4 282E mov R2,R24
00E6 2092CA00 sts _m,R2
00EA 8C33 cpi R24,60
00EC 29F4 brne L14
00EE .dbline 108
00EE 2224 clr R2
00F0 2092CA00 sts _m,R2
00F4 .dbline 109
00F4 ; }
00F4 .dbline 110
00F4 ; }
00F4 .dbline 111
00F4 ; }
00F4 01C0 rjmp L14
00F6 L13:
00F6 .dbline 112
00F6 ; else{
00F6 .dbline 113
00F6 ; PORTD |= 0x20;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -