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

📄 test2.lis

📁 将ucosII移植到ATmeaga8上,能够运行,有兴趣的朋友试试.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module test2.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\job\avrtest\光盘\开发板\iccavr\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                   .dbline 36
 0014           ; }
 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           ; // 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                   .dbline 58
 002E           ; }
 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 D:\job\avrtest\光盘\开发板\iccavr\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           ; // 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           ;       OSTaskCreate(Task1,
 0034 87E0              ldi R24,7
 0036 8A83              std y+2,R24
 0038 80E0              ldi R24,<_Task1Stack+99
 003A 90E0              ldi R25,>_Task1Stack+99
 003C 8883              std y+0,R24
 003E 9983              std y+1,R25
 0040 2227              clr R18
 0042 3327              clr R19
 0044 00E0              ldi R16,<PL_Task1
 0046 10E0              ldi R17,>PL_Task1
 0048 00D0              rcall _OSTaskCreate
 004A                   .dbline 76
 004A           ;                               (void *)0,
 004A           ;                               &Task1Stack[OS_TASK_DEF_STK_SIZE-1],
 004A           ;                               7);
 004A           ;       OSTaskCreate(Task2,
 004A 88E0              ldi R24,8
 004C 8A83              std y+2,R24
 004E 80E0              ldi R24,<_Task2Stack+99
 0050 90E0              ldi R25,>_Task2Stack+99
 0052 8883              std y+0,R24
 0054 9983              std y+1,R25
 0056 2227              clr R18
 0058 3327              clr R19
 005A 00E0              ldi R16,<PL_Task2
 005C 10E0              ldi R17,>PL_Task2
 005E 00D0              rcall _OSTaskCreate
 0060                   .dbline 81
 0060           ;                               (void *)0,
 0060           ;                               &Task2Stack[OS_TASK_DEF_STK_SIZE-1],
 0060           ;                               8); 
 0060           ;       // init und start tick
 0060           ;     TC2_Init();                       // Timer/Counter#2 Overflow and Comp init
 0060 DADF              rcall _TC2_Init
 0062                   .dbline 82
 0062           ;     uart0_init();
 0062 CEDF              rcall _uart0_init
 0064                   .dbline 83
 0064           ;     OSStart();                // start multitasking
 0064 00D0              rcall _OSStart
 0066                   .dbline -2
 0066                   .dbline 84
 0066           ; }
 0066           L4:
 0066 2396              adiw R28,3
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbend
 006A                   .dbfunc e Task1 _Task1 fV
 006A           ;           key2 -> R12
 006A           ;              i -> R14
 006A           ;           key1 -> y+0
 006A           ;           data -> R10,R11
                        .even
 006A           _Task1::
 006A 00D0              rcall push_gset5x
 006C 5801              movw R10,R16
 006E 2197              sbiw R28,1
 0070                   .dbline -1
 0070                   .dbline 87
 0070           ; 
 0070           ; //*****************************************************************************
 0070           ; void Task1(void *data){
 0070                   .dbline 89
 0070           ;     unsigned char i,key1,key2;
 0070           ;       data = data;
 0070                   .dbline 90
 0070           ;       PORTD |= 0x1C;    //  key
 0070 82B3              in R24,0x12
 0072 8C61              ori R24,28
 0074 82BB              out 0x12,R24
 0076                   .dbline 91
 0076           ;       DDRD  &= ~0x1C;
 0076 81B3              in R24,0x11
 0078 837E              andi R24,227
 007A 81BB              out 0x11,R24
 007C                   .dbline 92
 007C           ;       PORTD |= 0x20;    //  bell
 007C 959A              sbi 0x12,5
 007E                   .dbline 93
 007E           ;       DDRD  |= 0x20;
 007E 8D9A              sbi 0x11,5
 0080                   .dbline 94
 0080           ;       init164();        //  显示  初始化
 0080 00D0              rcall _init164
 0082                   .dbline 95
 0082           ;       state = 1;
 0082 81E0              ldi R24,1
 0084 8093C800          sts _state,R24
 0088                   .dbline 96
 0088           L8:
 0088                   .dbline 96
 0088           ;       for (;;){
 0088                   .dbline 98
 0088           ; //  key
 0088           ;         key1 = PIND & 0x1C;
 0088 80B3              in R24,0x10
 008A 8C71              andi R24,28
 008C 8883              std y+0,R24
 008E                   .dbline 99
 008E           ;               if(key1 == 0x1C){
 008E 8C31              cpi R24,28
 0090 59F5              brne L12
 0092                   .dbline 99
 0092                   .dbline 100
 0092           ;                   PORTD &= ~0x20;
 0092 9598              cbi 0x12,5
 0094                   .dbline 101
 0094           ;                       if(key2 == 0x0C){
 0094 8C2D              mov R24,R12
 0096 8C30              cpi R24,12
 0098 31F4              brne L14
 009A                   .dbline 101
 009A                   .dbline 102
 009A           ;                               state ^= 0x01;
 009A 81E0              ldi R24,1
 009C 2090C800          lds R2,_state
 00A0 2826              eor R2,R24
 00A2 2092C800          sts _state,R2
 00A6                   .dbline 103
 00A6           ;                       }
 00A6           L14:
 00A6                   .dbline 104
 00A6           ;                       if(state == 0){
 00A6 2090C800          lds R2,_state
 00AA 2220              tst R2
 00AC F1F4              brne L13
 00AE                   .dbline 104
 00AE                   .dbline 105
 00AE           ;                           if(key2 == 0x18){
 00AE 8C2D              mov R24,R12
 00B0 8831              cpi R24,24
 00B2 59F4              brne L18
 00B4                   .dbline 105
 00B4                   .dbline 106
 00B4           ;                               if(++s == 60) s = 0;
 00B4 8091C900          lds R24,_s
 00B8 8F5F              subi R24,255    ; addi 1
 00BA 282E              mov R2,R24
 00BC 2092C900          sts _s,R2
 00C0 8C33              cpi R24,60
 00C2 19F4              brne L20
 00C4                   .dbline 106
 00C4 2224              clr R2
 00C6 2092C900          sts _s,R2
 00CA           L20:
 00CA                   .dbline 107
 00CA           ;                           }
 00CA           L18:
 00CA                   .dbline 108
 00CA           ;                           if(key2 == 0x14){
 00CA 8C2D              mov R24,R12
 00CC 8431              cpi R24,20
 00CE 69F4              brne L13
 00D0                   .dbline 108
 00D0                   .dbline 109
 00D0           ;                                   if(++m == 60) m = 0;
 00D0 8091CA00          lds R24,_m
 00D4 8F5F              subi R24,255    ; addi 1
 00D6 282E              mov R2,R24
 00D8 2092CA00          sts _m,R2
 00DC 8C33              cpi R24,60
 00DE 29F4              brne L13
 00E0                   .dbline 109
 00E0 2224              clr R2
 00E2 2092CA00          sts _m,R2
 00E6                   .dbline 110
 00E6           ;                           }
 00E6                   .dbline 111
 00E6           ;                       }
 00E6                   .dbline 112
 00E6           ;               }
 00E6 01C0              rjmp L13
 00E8           L12:

⌨️ 快捷键说明

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