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

📄 output.s

📁 avr单片机
💻 S
📖 第 1 页 / 共 3 页
字号:
	.even
_timer0_init::
	.dbline -1
	.dbline 86
;    else{UCSR0B&=0XDF;}
;    
; }
; 
; 
; //======================================================time0 初始化
; //TIMER0 initialisation - prescale:32
; // WGM: Normal
; // desired value: 1KHz
; // actual value:  1.000KHz (0.0%)
; void timer0_init(void){
	.dbline 87
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 88
;  ASSR  = 0x00; //set async mode//同步方式,允许更新计数,比较输出,控制寄存器
	out 0x30,R2
	.dbline 89
;  TCNT0 = 0x83; //set count
	ldi R24,131
	out 0x32,R24
	.dbline 90
;  OCR0  = 0x7D;
	ldi R24,125
	out 0x31,R24
	.dbline 91
;  TCCR0 = 0x05; //start timer//128分频
	ldi R24,5
	out 0x33,R24
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 60
	jmp _timer0_comp_isr
	.area text(rom, con, rel)
	.dbfile D:\excersize\output.c
	.dbfunc e timer0_comp_isr _timer0_comp_isr fV
	.even
_timer0_comp_isr::
	st -y,R24
	st -y,R25
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 95
; }
; //======================================================time0 中断
; #pragma interrupt_handler timer0_comp_isr:16
; void timer0_comp_isr(void){
	.dbline 96
;    TCNT0 = 0x83;
	ldi R24,131
	out 0x32,R24
	.dbline 97
;    T0Count0++;
	lds R24,_T0Count0
	lds R25,_T0Count0+1
	adiw R24,1
	sts _T0Count0+1,R25
	sts _T0Count0,R24
	.dbline -2
L9:
	ld R24,y+
	out 0x3f,R24
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 109
; //   T0Count1++;
;   // T0Count2++;
;   // T0Count3++; 
;   // T0Count4++;
;  //compare occured TCNT0=OCR0
; }
; //======================================================速度中断处理函数
; 
; //======================================================CPU初始化
; //call this routine to initialise all peripherals
; void init_devices(void)
; {
	.dbline 111
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 112
;  XDIV  = 0x00; //xtal divider//系统时钟分频控制寄存器
	clr R2
	out 0x3c,R2
	.dbline 113
;  XMCRA = 0x0E; //external memory//外部存储器控制寄存器
	ldi R24,14
	sts 109,R24
	.dbline 114
;  XMCRB = 0x80;
	ldi R24,128
	sts 108,R24
	.dbline 115
;  mapping_init();
	xcall _mapping_init
	.dbline 116
;  port_init();
	xcall _port_init
	.dbline 119
;  //watchdog_init();
; // timer1_init();
;  timer0_init();
	xcall _timer0_init
	.dbline 123
; 
;  //adc_init();
;  
;  MCUCR = 0xC0;//MCU控制寄存器
	ldi R24,192
	out 0x35,R24
	.dbline 124
;  EICRA = 0x0A; //extended ext ints//外部中断控制寄存器
	ldi R24,10
	sts 106,R24
	.dbline 125
;  EICRB = 0x0F; //extended ext ints
	ldi R24,15
	out 0x3a,R24
	.dbline 126
;  EIMSK = 0x33; //0x03 extended ext enable
	ldi R24,51
	out 0x39,R24
	.dbline 127
;  TIMSK = 0x12; //timer interrupt sources  01:time0
	ldi R24,18
	out 0x37,R24
	.dbline 128
;  ETIMSK = 0x00; //extended timer interrupt sources
	clr R2
	sts 125,R2
	.dbline 129
;  uart0_init();
	xcall _uart0_init
	.dbline 130
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e WatchDog _WatchDog fV
	.even
_WatchDog::
	.dbline -1
	.dbline 135
; 	  // MyselfCan0Addr=1;
; 	  // MyselfCan1Addr=2;
; }
; //======================================================看门狗处理函数
; void WatchDog(void){
	.dbline 136
;         DDRE|= 0x08;
	sbi 0x2,3
	.dbline 137
; 		PORTE&= 0xF7;
	in R24,0x3
	andi R24,247
	out 0x3,R24
	.dbline 138
; 		PORTE|= 0x08;
	sbi 0x3,3
	.dbline 139
; 		PORTE&= 0xF7;
	in R24,0x3
	andi R24,247
	out 0x3,R24
	.dbline 140
; 		PORTE|= 0x08;
	sbi 0x3,3
	.dbline 141
; 		PORTE&= 0xF7;
	in R24,0x3
	andi R24,247
	out 0x3,R24
	.dbline 142
; 		PORTE|= 0x08;
	sbi 0x3,3
	.dbline 143
; 		WDR();
	wdr
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e set_value _set_value fV
	.even
_set_value::
	.dbline -1
	.dbline 149
;      }
; 
; 
; 
; //===============================================初始设置
; void set_value(void){
	.dbline 153
;    
; //   V_average_incept.Word=0;
;   // Cr_average_incept.Word=0;
;    OutputByte0Reg = 255;
	ldi R24,255
	sts _OutputByte0Reg,R24
	.dbline 154
;    OutputByte1Reg = 255;
	sts _OutputByte1Reg,R24
	.dbline 155
;    OutputByte2Reg = 255;
	sts _OutputByte2Reg,R24
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e tx0_int_to_bcd _tx0_int_to_bcd fV
;           head -> R22
;              j -> R10
;              i -> R20,R21
	.even
_tx0_int_to_bcd::
	xcall push_gset3
	movw R20,R16
	.dbline -1
	.dbline 162
; }
; 
; 
; //将int型变量转换为bcd码,并填充到TxBuffer0[]中
; /********************************************************************************/
; void tx0_int_to_bcd(int i)
; {
	.dbline 163
;    UC j,head=0;
	clr R22
	.dbline 164
;    if(i<0){
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge L14
	.dbline 164
	.dbline 165
;       i=-i;
	com R20
	com R21
	subi R20,0xFF
	sbci R21,0xFF
	.dbline 166
;       TxBuffer0[TxOperateSp0++]='-';
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,45
	std z+0,R24
	.dbline 167
;    }	  
L14:
	.dbline 168
;    j=i/10000;i%=10000;if(j){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	ldi R18,10000
	ldi R19,39
	movw R16,R20
	xcall div16s
	mov R10,R16
	.dbline 168
	ldi R18,10000
	ldi R19,39
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 168
	tst R10
	breq L16
	.dbline 168
	.dbline 168
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 168
	ldi R22,1
	.dbline 168
L16:
	.dbline 169
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall div16s
	mov R10,R16
	.dbline 169
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 169
	tst R10
	brne L20
	tst R22
	breq L18
L20:
	.dbline 169
;    j=i/1000;i%=1000;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	.dbline 169
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 169
	ldi R22,1
	.dbline 169
L18:
	.dbline 170
	ldi R18,100
	ldi R19,0
	movw R16,R20
	xcall div16s
	mov R10,R16
	.dbline 170
	ldi R18,100
	ldi R19,0
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 170
	tst R10
	brne L23
	tst R22
	breq L21
L23:
	.dbline 170
;    j=i/100;i%=100;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	.dbline 170
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 170
	ldi R22,1
	.dbline 170
L21:
	.dbline 171
	ldi R18,10
	ldi R19,0
	movw R16,R20
	xcall div16s
	mov R10,R16
	.dbline 171
	ldi R18,10
	ldi R19,0
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 171
	tst R10
	brne L26
	tst R22
	breq L24
L26:
	.dbline 171
;    j=i/10;i%=10;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	.dbline 171
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 171
	ldi R22,1
	.dbline 171
L24:
	.dbline 172
;    TxBuffer0[TxOperateSp0++]=i+0x30;
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	movw R24,R20
	adiw R24,48
	std z+0,R24
	.dbline -2
L13:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r head 22 c
	.dbsym r j 10 c
	.dbsym r i 20 I
	.dbend
	.dbfunc e tx0_uc_to_bcd _tx0_uc_to_bcd fV
;           head -> R22
;              j -> R10
;              i -> R20
	.even
_tx0_uc_to_bcd::
	xcall push_gset3
	mov R20,R16
	.dbline -1
	.dbline 178
; }
; /*******************************************************************************
; 将uc型变量转换为bcd码,并填充到TxBuffer0[]中
; ********************************************************************************/
; void tx0_uc_to_bcd(UC i)
; {  
	.dbline 179
;    UC j,head=0;
	clr R22
	.dbline 180
;    j=i/100;i%=100;if(j){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	ldi R17,100
	mov R16,R20
	xcall div8u
	mov R10,R16
	.dbline 180
	ldi R17,100
	mov R16,R20
	xcall mod8u
	mov R20,R16
	.dbline 180
	tst R10
	breq L28
	.dbline 180
	.dbline 180
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 180
	ldi R22,1
	.dbline 180
L28:
	.dbline 181
	ldi R17,10
	mov R16,R20
	xcall div8u
	mov R10,R16
	.dbline 181
	ldi R17,10
	mov R16,R20
	xcall mod8u
	mov R20,R16
	.dbline 181
	tst R10
	brne L32
	tst R22
	breq L30
L32:
	.dbline 181
;    j=i/10;i%=10;if(j||head){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
	.dbline 181
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 181
	ldi R22,1
	.dbline 181
L30:
	.dbline 182
;    TxBuffer0[TxOperateSp0++]=i+0x30;
	lds R2,_TxOperateSp0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _TxOperateSp0,R24
	ldi R24,<_TxBuffer0
	ldi R25,>_TxBuffer0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R20
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline -2
L27:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r head 22 c
	.dbsym r j 10 c
	.dbsym r i 20 c
	.dbend
	.dbfunc e io_test _io_test fV
;          Delay -> R20,R21
;              i -> R22
	.even
_io_test::
	xcall push_gset2
	.dbline -1
	.dbline 187
; }
; 
; 
; 					   														   										
; void io_test(void){
	.dbline 188
;    UC i=0;
	clr R22
	.dbline 190
;    UI Delay;
;    if(T0Count0>500){//||(RxFlag==ON)){
	ldi R24,500
	ldi R25,1
	lds R2,_T0Count0
	lds R3,_T0Count0+1
	cp R24,R2
	cpc R25,R3
	brlo X0
	xjmp L34
X0:
	.dbline 190
	.dbline 191
;       T0Count0=0;
	clr R2
	clr R3
	sts _T0Count0+1,R3
	sts _T0Count0,R2
	.dbline 193
; //	  RxFlag=OFF;  
;       OutputByte0Reg=OutputTable[TestIOSp][0];
	lds R2,_TestIOSp
	ldi R24,3
	mul R24,R2
	movw R30,R0
	ldi R24,<_OutputTable
	ldi R25,>_OutputTable
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _OutputByte0Reg,R2
	.dbline 194
;       OutputByte1Reg=OutputTable[TestIOSp][1];
	lds R2,_TestIOSp
	ldi R24,3
	mul R24,R2
	movw R30,R0
	ldi R24,<_OutputTable+1
	ldi R25,>_OutputTable+1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _OutputByte1Reg,R2
	.dbline 195
;       OutputByte2Reg=OutputTable[TestIOSp][2];
	lds R2,_TestIOSp
	ldi R24,3
	mul R24,R2

⌨️ 快捷键说明

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