📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\main.c
0000 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 16
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "TypeDef.h"
0000 ;
0000 ; unsigned int CurrentOut;
0000 ; unsigned char TaskState[MAX_TASK_NUM];// 用于任务调度 4个
0000 ; unsigned char LedBit;
0000 ; unsigned char DisBuffer[8];
0000 ; unsigned char SysP5msTimer;
0000 ; unsigned char disp_flag;
0000 ; extern void TaskInit(void);
0000 ; extern void TaskRun(void);
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 17
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 18
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 19
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 20
0008 ; DDRB = 0xFF;
0008 8FEF ldi R24,255
000A 87BB out 0x17,R24
000C .dbline 21
000C ; PORTC = 0xFF; //m103 output only
000C 85BB out 0x15,R24
000E .dbline 22
000E ; DDRC = 0xFF;
000E 84BB out 0x14,R24
0010 .dbline 23
0010 ; PORTD = 0x1F;
0010 8FE1 ldi R24,31
0012 82BB out 0x12,R24
0014 .dbline 24
0014 ; DDRD = 0x10;
0014 80E1 ldi R24,16
0016 81BB out 0x11,R24
0018 .dbline -2
0018 L5:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e adc_init _adc_init fV
.even
001A _adc_init::
001A .dbline -1
001A .dbline 33
001A ; }
001A ;
001A ;
001A ;
001A ;
001A ; //ADC initialize
001A ; // Conversion time: 6uS
001A ; void adc_init(void)
001A ; {
001A .dbline 34
001A ; ADCSR = 0x00; //disable adc
001A 2224 clr R2
001C 26B8 out 0x6,R2
001E .dbline 35
001E ; ADMUX = 0xc0; //select adc input 0
001E 80EC ldi R24,192
0020 87B9 out 0x7,R24
0022 .dbline 36
0022 ; ACSR = 0x80;
0022 80E8 ldi R24,128
0024 88B9 out 0x8,R24
0026 .dbline 37
0026 ; ADCSR = 0x81;
0026 81E8 ldi R24,129
0028 86B9 out 0x6,R24
002A .dbline -2
002A L6:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
002C .dbfunc e watchdog_init _watchdog_init fV
.even
002C _watchdog_init::
002C .dbline -1
002C .dbline 44
002C ; }
002C ;
002C ;
002C ; //Watchdog initialize
002C ; // prescale: 2048K
002C ; void watchdog_init(void)
002C ; {
002C .dbline 45
002C ; WDR (); //this prevents a timeout on enabling
002C A895 wdr
002E .dbline 46
002E ; WDTCR |= (1<<WDE);/* 30-Oct-2006 Umesh*/
002E 81B5 in R24,0x21
0030 8860 ori R24,8
0032 81BD out 0x21,R24
0034 .dbline 47
0034 ; WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
0034 8FE0 ldi R24,15
0036 81BD out 0x21,R24
0038 .dbline -2
0038 L7:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
003A .dbfunc e timer0_init _timer0_init fV
.even
003A _timer0_init::
003A .dbline -1
003A .dbline 54
003A ; }
003A ;
003A ; //TIMER0 initialize - prescale:64
003A ; // desired value: 1mSec
003A ; // actual value: 0.992mSec (0.8%)
003A ; void timer0_init(void)
003A ; {
003A .dbline 55
003A ; TCCR0 = 0x00; //stop
003A 2224 clr R2
003C 23BE out 0x33,R2
003E .dbline 56
003E ; TCNT0 = 0x83; //set count
003E 83E8 ldi R24,131
0040 82BF out 0x32,R24
0042 .dbline 57
0042 ; TCCR0 = 0x03; //start timer
0042 83E0 ldi R24,3
0044 83BF out 0x33,R24
0046 .dbline -2
0046 L8:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
.area vector(rom, abs)
.org 36
0024 0C942400 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0048 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\main.c
0048 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0048 _timer0_ovf_isr::
0048 2A92 st -y,R2
004A 0A93 st -y,R16
004C 1A93 st -y,R17
004E 8A93 st -y,R24
0050 9A93 st -y,R25
0052 EA93 st -y,R30
0054 FA93 st -y,R31
0056 2FB6 IN R2,63
0058 2A92 st -y,R2
005A .dbline -1
005A .dbline 62
005A ; }
005A ;
005A ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
005A ; void timer0_ovf_isr(void)
005A ; {
005A .dbline 65
005A ;
005A ;
005A ; if(LedBit >= LED_MAX_NUM)
005A 80910A00 lds R24,_LedBit
005E 8830 cpi R24,8
0060 18F0 brlo L10
0062 X0:
0062 .dbline 66
0062 ; LedBit=0;
0062 2224 clr R2
0064 20920A00 sts _LedBit,R2
0068 L10:
0068 .dbline 67
0068 ; if(disp_flag)
0068 20900000 lds R2,_disp_flag
006C 2220 tst R2
006E 91F0 breq L12
0070 X1:
0070 .dbline 68
0070 ; {
0070 .dbline 69
0070 ; LED_CONTROL = ~(0x01<<LedBit);
0070 10910A00 lds R17,_LedBit
0074 01E0 ldi R16,1
0076 0E940000 xcall lsl8
007A 202E mov R2,R16
007C 2094 com R2
007E 28BA out 0x18,R2
0080 .dbline 70
0080 ; LED_DATA = DisBuffer[LedBit];
0080 80E0 ldi R24,<_DisBuffer
0082 90E0 ldi R25,>_DisBuffer
0084 E0910A00 lds R30,_LedBit
0088 FF27 clr R31
008A E80F add R30,R24
008C F91F adc R31,R25
008E 2080 ldd R2,z+0
0090 25BA out 0x15,R2
0092 .dbline 71
0092 ; }
0092 03C0 xjmp L13
0094 L12:
0094 .dbline 73
0094 ; else
0094 ; {
0094 .dbline 74
0094 ; LED_CONTROL = 0x00;
0094 2224 clr R2
0096 28BA out 0x18,R2
0098 .dbline 75
0098 ; LED_DATA = 0x00;
0098 25BA out 0x15,R2
009A .dbline 76
009A ; }
009A L13:
009A .dbline 77
009A ; LedBit++;
009A 80910A00 lds R24,_LedBit
009E 8F5F subi R24,255 ; addi 1
00A0 80930A00 sts _LedBit,R24
00A4 .dbline 81
00A4 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -