📄 display.lst
字号:
__text_start:
__start:
0013 E5CF LDI R28,0x5F
0014 E0D4 LDI R29,4
0015 BFCD OUT P3D,R28
0016 BFDE OUT P3E,R29
0017 51C0 SUBI R28,0x10
0018 40D0 SBCI R29,0
0019 EA0A LDI R16,0xAA
001A 8308 STD R16,0+Y
001B 2400 CLR R0
001C E6E0 LDI R30,0x60
001D E0F0 LDI R31,0
001E E010 LDI R17,0
001F 36E1 CPI R30,0x61
0020 07F1 CPC R31,R17
0021 F011 BEQ 0x0024
0022 9201 ST R0,Z+
0023 CFFB RJMP 0x001F
0024 8300 STD R16,0+Z
0025 E2E6 LDI R30,0x26
0026 E0F0 LDI R31,0
0027 E6A0 LDI R26,0x60
0028 E0B0 LDI R27,0
0029 E010 LDI R17,0
002A 32E6 CPI R30,0x26
002B 07F1 CPC R31,R17
002C F021 BEQ 0x0031
002D 95C8 LPM
002E 9631 ADIW R30,1
002F 920D ST R0,X+
0030 CFF9 RJMP 0x002A
0031 D056 RCALL _main
_exit:
0032 CFFF RJMP _exit
FILE: D:\job\avrtest\web\example\display\display.c
(0001) //ICC-AVR application builder : 2005-2-24 23:07:53
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007)
(0008) unsigned char n;
(0009)
(0010) //TIMER1 initialisation - prescale:256
(0011) // actual value: 1.000Hz (0.0%)
(0012) void timer1_init(void)
(0013) {
(0014) TCCR1B = 0x00; //stop
_timer1_init:
0033 2422 CLR R2
0034 BC2E OUT P2E,R2
(0015) TCNT1H = 0x85; //setup
0035 E885 LDI R24,0x85
0036 BD8D OUT P2D,R24
(0016) TCNT1L = 0xEE;
0037 EE8E LDI R24,0xEE
0038 BD8C OUT P2C,R24
(0017) OCR1AH = 0x7A;
0039 E78A LDI R24,0x7A
003A BD8B OUT P2B,R24
(0018) OCR1AL = 0x12;
003B E182 LDI R24,0x12
003C BD8A OUT P2A,R24
(0019) OCR1BH = 0x7A;
003D E78A LDI R24,0x7A
003E BD89 OUT P29,R24
(0020) OCR1BL = 0x12;
003F E182 LDI R24,0x12
0040 BD88 OUT P28,R24
(0021) ICR1H = 0x7A;
0041 E78A LDI R24,0x7A
0042 BD87 OUT P27,R24
(0022) ICR1L = 0x12;
0043 E182 LDI R24,0x12
0044 BD86 OUT P26,R24
(0023) TCCR1A = 0x00;
0045 BC2F OUT P2F,R2
(0024) TCCR1B = 0x04; //start Timer
0046 E084 LDI R24,4
0047 BD8E OUT P2E,R24
(0025) }
0048 9508 RET
_timer1_ovf_isr:
i --> R16
ch --> R18
0049 922A ST R2,-Y
004A 930A ST R16,-Y
004B 932A ST R18,-Y
004C 938A ST R24,-Y
004D 939A ST R25,-Y
004E B62F IN R2,P3F
004F 922A ST R2,-Y
(0026)
(0027) // timer1 中断 ,1秒
(0028) #pragma interrupt_handler timer1_ovf_isr:9
(0029) void timer1_ovf_isr(void)
(0030) {
(0031) unsigned char ch,i;
(0032)
(0033) TCNT1H = 0x85; //reload counter high value
0050 E885 LDI R24,0x85
0051 BD8D OUT P2D,R24
(0034) TCNT1L = 0xEE; //reload counter low value
0052 EE8E LDI R24,0xEE
0053 BD8C OUT P2C,R24
(0035)
(0036) if(++n == 10) n = 0;
0054 91800060 LDS R24,_n
0056 5F8F SUBI R24,0xFF
0057 2E28 MOV R2,R24
0058 92200060 STS _n,R2
005A 308A CPI R24,0xA
005B F419 BNE 0x005F
005C 2422 CLR R2
005D 92200060 STS _n,R2
(0037) ch = n | 0x70;
005F 91200060 LDS R18,_n
0061 6720 ORI R18,0x70
(0038) PORTB &= ~0x01; // 消隐
0062 98C0 CBI P18,0
(0039) PORTD &= ~0x40; // CLK
0063 9896 CBI P12,6
(0040) for(i=0; i<8; i++){
0064 2700 CLR R16
0065 C00A RJMP 0x0070
(0041) if(ch & 0x80)
0066 FF27 SBRS R18,7
0067 C002 RJMP 0x006A
(0042) PORTD |= 0x80;
0068 9A97 SBI P12,7
0069 C001 RJMP 0x006B
(0043) else
(0044) PORTD &= ~0x80;
006A 9897 CBI P12,7
(0045) ch <<= 1;
006B 0F22 LSL R18
(0046) PORTD |= 0x40;
006C 9A96 SBI P12,6
(0047) asm("nop");
006D 0000 NOP
(0048) PORTD &= ~0x40;
006E 9896 CBI P12,6
006F 9503 INC R16
0070 3008 CPI R16,0x8
0071 F3A0 BCS 0x0066
(0049) }
(0050) PORTB |= 0x01; // 显示
0072 9AC0 SBI P18,0
(0051) }
0073 9029 LD R2,Y+
0074 BE2F OUT P3F,R2
0075 9199 LD R25,Y+
0076 9189 LD R24,Y+
0077 9129 LD R18,Y+
0078 9109 LD R16,Y+
0079 9029 LD R2,Y+
007A 9518 RETI
(0052)
(0053) // 初始化
(0054) void init_devices(void)
(0055) {
(0056) CLI(); // 禁止中断
_init_devices:
007B 94F8 BCLR 7
(0057) DDRB = 0x01; // 初始化操作74LS164的管脚
007C E081 LDI R24,1
007D BB87 OUT P17,R24
(0058) DDRD = 0xC0; // 初始化操作74LS164的管脚
007E EC80 LDI R24,0xC0
007F BB81 OUT P11,R24
(0059) timer1_init();
0080 DFB2 RCALL _timer1_init
(0060)
(0061) MCUCR = 0x00;
0081 2422 CLR R2
0082 BE25 OUT P35,R2
(0062) GICR = 0x00;
0083 BE2B OUT P3B,R2
(0063) TIMSK = 0x04; // 设置timer1中断
0084 E084 LDI R24,4
0085 BF89 OUT P39,R24
(0064) SEI(); // 中断使能
0086 9478 BSET 7
(0065) }
0087 9508 RET
(0066)
(0067) //
(0068) void main(void)
(0069) {
(0070) unsigned char x;
(0071) init_devices();
_main:
x --> R20
0088 DFF2 RCALL _init_devices
(0072) //insert your functional code here...
(0073) for(;;){
(0074) x++;
FILE: <library>
0089 9543 INC R20
008A CFFE RJMP 0x0089
008B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -