📄 main.s
字号:
.module main.c
.area lit(rom, con, rel)
_table::
.byte 48,49,50,51,52,53,54,55,56,57,46,'C,32,0
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e table _table A[14:14]kc
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
_i::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e i _i c
_clr::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e clr _clr c
_two::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e two _two c
_end::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e end _end c
_start::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e start _start c
_one::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbsym e one _one c
.area text(rom, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 42
; /*********************************Copyright (c)*********************************
; **
; ** 文 件 名: main.c
; ** 最后修改日期: 2005年06月8日
; ** 描 述: 主函数
; ** 版 本: V1.0
; ** 主 控 芯 片:M16 晶振频率:8 MHZ
; *******************************************************************************/
; #include <iom16v.h>
; #include <macros.h>
; #include "define.h"
; #include "function.h"
; #include "defineDS18B20.h"
; #include "defineLCD.h"
; #define b9600 0x33
; #define baud b9600
; #define fone 0x2a
; #define ftwo 0x2b
; #define fclr 0x2d
; #define fend 0x3c
; #define floop 0x3e
; /******************************************************************************
; 定义全局变量
; *******************************************************************************/
; const unsigned char table[]="0123456789.C " ; //显示常量
; unsigned char i=0 ; //中断里的计数变量
; char string[18] ; //字符串
; unsigned char clr = 0 ; //清屏命令标志
; unsigned char two = 0 ; //第二行显示标志
; unsigned char end = 0 ; // 结束标志
; unsigned char start = 0 ; //接收完成标志
; unsigned char one = 0 ; //第一行显示标志
;
;
; //void draw(unsigned long int m );
; /*****************************************************************************
; 函数声明
; ******************************************************************************/
; void puts(unsigned int data );
; void display(void) ;
; void port_init(void)
; {
.dbline 43
; PORTA = 0x00;
clr R2
out 0x1b,R2
.dbline 44
; DDRA = 0x00;
out 0x1a,R2
.dbline 45
; PORTB = 0x00;
out 0x18,R2
.dbline 46
; DDRB = 0x00; //输出
out 0x17,R2
.dbline 47
; PORTC = 0x00; //m103 output only
out 0x15,R2
.dbline 48
; DDRC = 0x00; //输出
out 0x14,R2
.dbline 49
; DDRD = 0x00;
out 0x11,R2
.dbline 50
; PORTD = 0x00;
out 0x12,R2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e getchar _getchar fc
.even
_getchar::
.dbline -1
.dbline 58
; }
;
; /******************************************************************************
;
; //字符输入函数
; *******************************************************************************/
; unsigned char getchar(void)
; {
L3:
.dbline 59
L4:
.dbline 59
; while(!(UCSRA& (1<<RXC)));
sbis 0xb,7
rjmp L3
.dbline 60
; return UDR;
in R16,0xc
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 44
jmp _uart0_rx_isr
.area text(rom, con, rel)
.dbfile F:\我的设计\delphi\uartdispy\mcu\main.c
.dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
_uart0_rx_isr::
st -y,R2
st -y,R16
st -y,R17
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 69
; }
;
;
; /*******************************************************************************
; 串行口接收中断
; *******************************************************************************/
; #pragma interrupt_handler uart0_rx_isr:12
; void uart0_rx_isr(void)
; {
.dbline 70
; string[i]= UDR ;
ldi R24,<_string
ldi R25,>_string
lds R30,_i
clr R31
add R30,R24
adc R31,R25
in R2,0xc
std z+0,R2
.dbline 71
; if(i==0)
lds R2,_i
tst R2
brne L7
.dbline 72
; {switch (string[0])
.dbline 72
lds R16,_string
clr R17
cpi R16,42
ldi R30,0
cpc R17,R30
breq L12
cpi R16,43
ldi R30,0
cpc R17,R30
breq L13
cpi R16,45
ldi R30,0
cpc R17,R30
breq L14
xjmp L8
X0:
.dbline 73
; {
L12:
.dbline 74
; case fone : {one=1;two=0;i++;}break;
.dbline 74
ldi R24,1
sts _one,R24
.dbline 74
clr R2
sts _two,R2
.dbline 74
lds R24,_i
subi R24,255 ; addi 1
sts _i,R24
.dbline 74
.dbline 74
xjmp L8
L13:
.dbline 75
; case ftwo : {two=1;one=0;i++;}break;
.dbline 75
ldi R24,1
sts _two,R24
.dbline 75
clr R2
sts _one,R2
.dbline 75
lds R24,_i
subi R24,255 ; addi 1
sts _i,R24
.dbline 75
.dbline 75
xjmp L8
L14:
.dbline 76
; case fclr : {clr=1;i=0;} break;
.dbline 76
ldi R24,1
sts _clr,R24
.dbline 76
clr R2
sts _i,R2
.dbline 76
.dbline 76
.dbline 77
; default: break ;
.dbline 79
; }
; }
xjmp L8
L7:
.dbline 80
; else if (string[i]==fend) {end=i-1;start=1;}
ldi R24,<_string
ldi R25,>_string
lds R30,_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,60
brne L15
.dbline 80
.dbline 80
lds R24,_i
subi R24,1
sts _end,R24
.dbline 80
ldi R24,1
sts _start,R24
.dbline 80
xjmp L16
L15:
.dbline 82
;
; else i++;
lds R24,_i
subi R24,255 ; addi 1
sts _i,R24
L16:
L8:
.dbline -2
L6:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R17,y+
ld R16,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e ad_1 _ad_1 fi
; value -> R16,R17
.even
_ad_1::
.dbline -1
.dbline 95
;
; }
;
; /******************************************************************************
; 函数名称:1号通道采集函数
; 函数功能:返回采集一次的模拟量
; 函数参数:无
; 返回值 : 16 位型 ,变量
;
; ******************************************************************************/
;
; unsigned int ad_1(void) //ad0采集函数,返回ad0的值
; {
.dbline 97
; unsigned int value;
; ADMUX=0xc1;
ldi R24,193
out 0x7,R24
.dbline 98
; ADCSR=0x86;
ldi R24,134
out 0x6,R24
.dbline 99
; BIT_SET(ADCSR,ADSC);
sbi 0x6,6
L18:
.dbline 100
L19:
.dbline 100
; while(ADCSR & (1<<ADSC)); //waitting ADC complete
sbic 0x6,6
rjmp L18
.dbline 101
; value=ADCL; //Read 8 low bits first (important)
in R16,0x4
clr R17
.dbline 102
; value|=( int)ADCH << 8; //read 2 high bits and shift into top byte
in R2,0x5
clr R3
mov R3,R2
clr R2
or R16,R2
or R17,R3
.dbline 103
; return(value);
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbsym r value 16 i
.dbend
.dbfunc e main _main fV
; temp -> <dead>
; vdata -> R10,R11
; data -> R12,R13
; m -> y+0
.even
_main::
sbiw R28,4
.dbline -1
.dbline 109
; }
;
;
;
; void main(void)
; {
.dbline 113
; /*****************************************************************************
; 变量定义
; *******************************************************************************/
; unsigned long int m=0 ; //温度采集后的值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -