?? uart_pc.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 + -