📄 test2.lis
字号:
.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 + -