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

📄 dianzhen.s

📁 是一款开发板的外围电路试验程序(附有原理图)
💻 S
字号:
	.module dianzhen.c
	.area data(ram, con, rel)
_data1::
	.blkb 2
	.area idata
	.byte 255,253
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 189,189
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 129,189
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 189,253
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbsym e data1 _data1 A[8:8]c
_data2::
	.blkb 2
	.area idata
	.byte 255,253
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.blkb 2
	.area idata
	.byte 235,231
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.blkb 2
	.area idata
	.byte 143,231
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.blkb 2
	.area idata
	.byte 235,253
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbsym e data2 _data2 A[8:8]c
_addr::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbsym e addr _addr c
_i::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbsym e i _i c
_j::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbsym e j _j L
	.area text(rom, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 12
; //ICC-AVR application builder : 2007-6-12 20:23:24
; // Target : M16
; // Crystal: 4.0000Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
; unsigned char data1[]={0xff,0xfd,0xbd,0xbd,0x81,0xbd,0xbd,0xfd};
; unsigned char data2[]={0xff,0xfd,0xeb,0xe7,0x8f,0xe7,0xeb,0xfd};
; unsigned char addr = 1,i = 0;
; long int j = 0;
; void port_init(void)
; {
	.dbline 13
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 14
;  DDRA  = 0xFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 15
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 16
;  DDRB  = 0xFF;
	out 0x17,R24
	.dbline 17
;  PORTC = 0x00; //m103 output only
	out 0x15,R2
	.dbline 18
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 19
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 20
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 28
; }
; 
; //TIMER0 initialize - prescale:64
; // WGM: Normal
; // desired value: 1KHz
; // actual value:  1.008KHz (0.8%)
; void timer0_init(void)
; {
	.dbline 29
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 30
;  TCNT0 = 0xC2; //set count
	ldi R24,194
	out 0x32,R24
	.dbline 31
;  OCR0  = 0x3E;  //set compare
	ldi R24,62
	out 0x3c,R24
	.dbline 32
;  TCCR0 = 0x03; //start timer
	ldi R24,3
	out 0x33,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 36
	jmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile F:\最新\点阵\dianzhen.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R8
	st -y,R9
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R27
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	xcall push_gset2
	.dbline -1
	.dbline 37
; }
; 
; #pragma interrupt_handler timer0_ovf_isr:10
; void timer0_ovf_isr(void)
; {
	.dbline 38
;  TCNT0 = 0xC2; //reload counter value
	ldi R24,194
	out 0x32,R24
	.dbline 41
;  
;  
;  PORTB = addr;
	lds R2,_addr
	out 0x18,R2
	.dbline 42
;  j++;
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_j+2
	lds R5,_j+2+1
	lds R2,_j
	lds R3,_j+1
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _j+1,R3
	sts _j,R2
	sts _j+2+1,R5
	sts _j+2,R4
	.dbline 43
;  if(j<5000)
	ldi R20,136
	ldi R21,19
	ldi R22,0
	ldi R23,0
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L4
	.dbline 44
;  PORTA = data1[i];
	ldi R24,<_data1
	ldi R25,>_data1
	lds R30,_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	out 0x1b,R2
	xjmp L5
L4:
	.dbline 46
;  else
;  PORTA = data2[i];
	ldi R24,<_data2
	ldi R25,>_data2
	lds R30,_i
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	out 0x1b,R2
L5:
	.dbline 48
;  
;  if(j>10000)
	ldi R20,16
	ldi R21,39
	ldi R22,0
	ldi R23,0
	lds R4,_j+2
	lds R5,_j+2+1
	lds R2,_j
	lds R3,_j+1
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L6
	.dbline 49
;  j=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _j+1,R21
	sts _j,R20
	sts _j+2+1,R23
	sts _j+2,R22
L6:
	.dbline 51
	lds R24,_i
	subi R24,255    ; addi 1
	sts _i,R24
	.dbline 53
	lds R2,_addr
	lsl R2
	sts _addr,R2
	.dbline 55
	tst R2
	brne L8
	.dbline 56
	.dbline 57
	ldi R24,1
	sts _addr,R24
	.dbline 58
	clr R2
	sts _i,R2
	.dbline 59
L8:
	.dbline -2
L3:
	xcall pop_gset2
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R9,y+
	ld R8,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 64
;  
;  i++;
;  
;  addr= addr<<1;
;  
;  if(addr == 0)
;   {
;    addr =1;
;    i=0;
;   }
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 66
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 67
;  port_init();
	xcall _port_init
	.dbline 68
;  timer0_init();
	xcall _timer0_init
	.dbline 70
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 71
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 72
;  TIMSK = 0x01; //timer interrupt sources
	ldi R24,1
	out 0x39,R24
	.dbline 73
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 79
;  //all peripherals are now initialized
; }
; 
; //
; void main(void)
; {
	.dbline 80
;  init_devices();
	xcall _init_devices
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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