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

📄 uart_pc.s

📁 16个单片机c语言实验程序
💻 S
字号:
	.module uart_pc.c
	.area text(rom, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart0.h
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 4
; #define uchar unsigned char
; 
; void port_init(void)
; {
	.dbline 5
;  PORTA = 0x00;
	clr R2
	out 0x1b,R2
	.dbline 6
;  DDRA  = 0x00;
	out 0x1a,R2
	.dbline 7
;  PORTB = 0x00;
	out 0x18,R2
	.dbline 8
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 9
;  PORTC = 0x00; //m103 output only
	out 0x15,R2
	.dbline 10
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 11
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 12
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 19
; }
; 
; //UART0 initialize
; // desired baud rate: 9600
; // actual: baud rate:9615 (0.2%)
; void uart0_init(void)
; {
	.dbline 20
;  UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 21
;  UCSRA = 0x00;
	out 0xb,R2
	.dbline 22
;  UCSRC = BIT(URSEL) | 0x06;
	ldi R24,134
	out 0x20,R24
	.dbline 23
;  UBRRL = 0x67; //set baud rate lo
	ldi R24,103
	out 0x9,R24
	.dbline 24
;  UBRRH = 0x00; //set baud rate hi
	out 0x20,R2
	.dbline 25
;  UCSRB = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 30
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 32
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 33
;  port_init();
	xcall _port_init
	.dbline 34
;  uart0_init();
	xcall _uart0_init
	.dbline 36
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 37
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 38
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 39
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e uart_tx _uart_tx fV
;            txc -> R16
	.even
_uart_tx::
	.dbline -1
	.dbline 44
;  //all peripherals are now initialized
; }
; 
; void uart_tx(uchar txc)      //send a uchar data
; {
L5:
	.dbline 45
; while(!(UCSRA&(1<<UDRE)));   //check send enable
L6:
	.dbline 45
	sbis 0xb,5
	rjmp L5
X0:
	.dbline 46
; UDR=txc;              
	out 0xc,R16
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbsym r txc 16 c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart0.h
_cn_00::
	.blkb 17
	.area idata
	.byte 177,177,190,169,182,171,191,216,191,170,183,162,176,229,10,13
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart0.h
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_00 _cn_00 A[17:17]c
_cn_01::
	.blkb 51
	.area idata
	.byte 'A,'T,'m,'e,'g,'a,49,54,214,247,208,190,198,172,163,186
	.byte 49,54,'K,32,'F,'l,'a,'s,'h,32,49,'K,32,'S,'R,'A
	.byte 'M,32,53,49,50,'B,'y,'t,'e,32,'E,'E,'P,'R,'O,'M
	.byte 10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_01 _cn_01 A[51:51]c
_cn_02::
	.blkb 51
	.area idata
	.byte 'I,50,'C,215,220,207,223,198,247,188,254,50,52,'C,48,52
	.byte 163,172,'E,'E,'P,'R,'O,'M,202,253,190,221,180,230,180,162
	.byte 198,247,163,172,52,'k,'B,'i,'t,32,'E,'E,'P,'R,'O,'M
	.byte 10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_02 _cn_02 A[51:51]c
_cn_03::
	.blkb 26
	.area idata
	.byte 181,165,215,220,207,223,'D,'S,49,56,'B,50,48,206,194,182
	.byte 200,180,171,184,208,198,247,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_03 _cn_03 A[26:26]c
_cn_04::
	.blkb 59
	.area idata
	.byte 'R,'S,50,51,50,189,211,191,218,'M,'a,'x,50,51,50,'A
	.byte 163,172,214,247,180,211,189,211,191,218,163,168,191,201,211,235
	.byte 188,198,203,227,187,250,187,242,198,228,203,251,191,170,183,162
	.byte 176,229,205,168,208,197,163,169,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_04 _cn_04 A[59:59]c
_cn_05::
	.blkb 28
	.area idata
	.byte 50,48,184,246,202,228,200,235,176,180,188,252,161,162,49,184
	.byte 246,184,180,206,187,176,180,188,252,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_05 _cn_05 A[28:28]c
_cn_06::
	.blkb 41
	.area idata
	.byte 56,206,187,182,175,204,172,201,168,195,232,'L,'E,'D,202,253
	.byte 194,235,185,220,161,162,56,206,187,'L,'E,'D,183,162,185,226
	.byte 182,254,188,171,185,220,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_06 _cn_06 A[41:41]c
_cn_07::
	.blkb 16
	.area idata
	.byte 49,184,246,206,222,212,180,183,228,195,249,198,247,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_07 _cn_07 A[16:16]c
_cn_08::
	.blkb 23
	.area idata
	.byte 49,194,183,'A,47,'D,202,228,200,235,191,201,181,247,181,231
	.byte 206,187,198,247,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_08 _cn_08 A[23:23]c
_cn_09::
	.blkb 28
	.area idata
	.byte 'L,'C,'D,49,54,48,50,186,205,'L,'C,'D,49,50,56,54
	.byte 52,210,186,190,167,189,211,191,218,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_09 _cn_09 A[28:28]c
_cn_10::
	.blkb 15
	.area idata
	.byte 'J,'T,'A,'G,183,194,213,230,189,211,191,218,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_10 _cn_10 A[15:15]c
_cn_11::
	.blkb 18
	.area idata
	.byte 'A,'V,'R,32,'I,'S,'P,207,194,212,216,189,211,191,218,10
	.byte 13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_11 _cn_11 A[18:18]c
_cn_12::
	.blkb 17
	.area idata
	.byte 'D,'S,49,51,48,50,202,177,214,211,181,231,194,183,10,13
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_12 _cn_12 A[17:17]c
_cn_13::
	.blkb 39
	.area idata
	.byte 203,249,211,208,'I,'O,191,218,200,171,178,191,210,253,179,246
	.byte 163,172,183,189,177,227,192,169,213,185,202,181,209,233,188,176
	.byte 178,226,202,212,10,13,0
	.area data(ram, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbsym e cn_13 _cn_13 A[39:39]c
	.area text(rom, con, rel)
	.dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
	.dbfunc e ms _ms fI
;             aa -> R16,R17
	.even
_ms::
	.dbline -1
	.dbline 29
; //串口通信程序
; //向pc串口发送数据
; //pc端使用 超级终端 建立连接
; //9600  8位数据 1位停止
; 
; #include <iom16v.h>
; #include <macros.h>
; #include "uart0.h"
; #define uint unsigned int
; 
; 
; uchar cn_00[]={"北京东控开发板\n\r"};
; uchar cn_01[]={"ATmega16主芯片:16K Flash 1K SRAM 512Byte EEPROM\n\r"};
; uchar cn_02[]={"I2C总线器件24C04,EEPROM数据存储器,4kBit EEPROM\n\r"};
; uchar cn_03[]={"单总线DS18B20温度传感器\n\r"};
; uchar cn_04[]={"RS232接口Max232A,主从接口(可与计算机或其他开发板通信)\n\r"};
; uchar cn_05[]={"20个输入按键、1个复位按键\n\r"};
; uchar cn_06[]={"8位动态扫描LED数码管、8位LED发光二极管\n\r"};
; uchar cn_07[]={"1个无源蜂鸣器\n\r"};
; uchar cn_08[]={"1路A/D输入可调电位器\n\r"};
; uchar cn_09[]={"LCD1602和LCD12864液晶接口\n\r"};
; uchar cn_10[]={"JTAG仿真接口\n\r"};
; uchar cn_11[]={"AVR ISP下载接口\n\r"};
; uchar cn_12[]={"DS1302时钟电路\n\r"};
; uchar cn_13[]={"所有IO口全部引出,方便扩展实验及测试\n\r"};
; 
; 
; ms(uint aa)
; {
	.dbline 30
; for(;aa>0;aa--);
	xjmp L12
L9:
	.dbline 30
L10:
	.dbline 30
	subi R16,1
	sbci R17,0
L12:
	.dbline 30
	cpi R16,0
	cpc R16,R17
	brne L9
X1:
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbsym r aa 16 i
	.dbend
	.dbfunc e write_cn _write_cn fV
;              i -> R10
;         cn_nub -> R12
;             cn -> R14,R15
	.even
_write_cn::
	xcall push_xgset00FC
	mov R12,R18
	movw R14,R16
	.dbline -1
	.dbline 34
; }
; 
; void write_cn(uchar *cn,uchar cn_nub)
; {
	.dbline 36
; uchar i;
; for(i=0;i<(cn_nub);i++)
	clr R10
	xjmp L17
L14:
	.dbline 37
; 		{
	.dbline 38
;       		uart_tx(cn[i]);       //发送数据i
	mov R30,R10
	clr R31
	add R30,R14
	adc R31,R15
	ldd R16,z+0
	xcall _uart_tx
	.dbline 39
; 			PORTA=i; 
	out 0x1b,R10
	.dbline 40
; 			ms(60000);
	ldi R16,60000
	ldi R17,234
	xcall _ms
	.dbline 41
; 		}
L15:
	.dbline 36
	inc R10
L17:
	.dbline 36
	cp R10,R12
	brlo L14
X2:
	.dbline -2
L13:
	.dbline 0 ; func end
	xjmp pop_xgset00FC
	.dbsym r i 10 c
	.dbsym r cn_nub 12 c
	.dbsym r cn 14 pc
	.dbend
	.dbfunc e main _main fI
;        rx_temp -> <dead>
;              i -> R10
	.even
_main::
	.dbline -1
	.dbline 47
; }
; 
; //与计算机通信的程序
; //计算机端使用超级终端,建立一个连接,9600,8位,1个停止位
; main()
; {
	.dbline 48
; uchar i=0,rx_temp;
	clr R10
	.dbline 49
; init_devices(); //串行口初始化   
	xcall _init_devices
	.dbline 51
; 
; DDRA=0xff;
	ldi R24,255
	out 0x1a,R24
	.dbline 52
; PORTA=0x00;
	clr R2
	out 0x1b,R2
	.dbline 54
; 
; ms(3000);
	ldi R16,3000
	ldi R17,11
	xcall _ms
	.dbline 55
; write_cn(cn_00,16);
	ldi R18,16
	ldi R16,<_cn_00
	ldi R17,>_cn_00
	xcall _write_cn
	.dbline 56
; write_cn(cn_01,50);
	ldi R18,50
	ldi R16,<_cn_01
	ldi R17,>_cn_01
	xcall _write_cn
	.dbline 57
; write_cn(cn_02,50);
	ldi R18,50
	ldi R16,<_cn_02
	ldi R17,>_cn_02
	xcall _write_cn
	.dbline 58
; write_cn(cn_03,25);
	ldi R18,25
	ldi R16,<_cn_03
	ldi R17,>_cn_03
	xcall _write_cn
	.dbline 59
; write_cn(cn_04,59);
	ldi R18,59
	ldi R16,<_cn_04
	ldi R17,>_cn_04
	xcall _write_cn
	.dbline 60
; write_cn(cn_05,27);
	ldi R18,27
	ldi R16,<_cn_05
	ldi R17,>_cn_05
	xcall _write_cn
	.dbline 61
; write_cn(cn_06,40);
	ldi R18,40
	ldi R16,<_cn_06
	ldi R17,>_cn_06
	xcall _write_cn
	.dbline 62
; write_cn(cn_07,15);
	ldi R18,15
	ldi R16,<_cn_07
	ldi R17,>_cn_07
	xcall _write_cn
	.dbline 63
; write_cn(cn_08,23);
	ldi R18,23
	ldi R16,<_cn_08
	ldi R17,>_cn_08
	xcall _write_cn
	.dbline 64
; write_cn(cn_09,27);
	ldi R18,27
	ldi R16,<_cn_09
	ldi R17,>_cn_09
	xcall _write_cn
	.dbline 65
; write_cn(cn_10,14);
	ldi R18,14
	ldi R16,<_cn_10
	ldi R17,>_cn_10
	xcall _write_cn
	.dbline 66
; write_cn(cn_11,17);
	ldi R18,17
	ldi R16,<_cn_11
	ldi R17,>_cn_11
	xcall _write_cn
	.dbline 67
; write_cn(cn_12,16);
	ldi R18,16
	ldi R16,<_cn_12
	ldi R17,>_cn_12
	xcall _write_cn
	.dbline 68
; write_cn(cn_13,38);
	ldi R18,38
	ldi R16,<_cn_13
	ldi R17,>_cn_13
	xcall _write_cn
	.dbline -2
L18:
	.dbline 0 ; func end
	ret
	.dbsym l rx_temp 1 c
	.dbsym r i 10 c
	.dbend
; }

⌨️ 快捷键说明

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