uart_pc.lis
来自「16个单片机c语言实验程序」· LIS 代码 · 共 512 行 · 第 1/2 页
LIS
512 行
0175 445331333032CAB1D6D3B5E7C2B70A0D .byte 'D,'S,49,51,48,50,202,177,214,211,181,231,194,183,10,13
0185 00 .byte 0
.area data(ram, con, rel)
0186 .dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
0186 .dbsym e cn_12 _cn_12 A[17:17]c
0186 _cn_13::
0186 .blkb 39
.area idata
0186 CBF9D3D0494FBFDAC8ABB2BFD2FDB3F6 .byte 203,249,211,208,'I,'O,191,218,200,171,178,191,210,253,179,246
0196 A3ACB7BDB1E3C0A9D5B9CAB5D1E9BCB0 .byte 163,172,183,189,177,227,192,169,213,185,202,181,209,233,188,176
01A6 B2E2CAD40A0D00 .byte 178,226,202,212,10,13,0
.area data(ram, con, rel)
01AD .dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
01AD .dbsym e cn_13 _cn_13 A[39:39]c
.area text(rom, con, rel)
0044 .dbfile D:\16实验程序\串口通信\与计算机通信\uart_pc.c
0044 .dbfunc e ms _ms fI
0044 ; aa -> R16,R17
.even
0044 _ms::
0044 .dbline -1
0044 .dbline 29
0044 ; //串口通信程序
0044 ; //向pc串口发送数据
0044 ; //pc端使用 超级终端 建立连接
0044 ; //9600 8位数据 1位停止
0044 ;
0044 ; #include <iom16v.h>
0044 ; #include <macros.h>
0044 ; #include "uart0.h"
0044 ; #define uint unsigned int
0044 ;
0044 ;
0044 ; uchar cn_00[]={"北京东控开发板\n\r"};
0044 ; uchar cn_01[]={"ATmega16主芯片:16K Flash 1K SRAM 512Byte EEPROM\n\r"};
0044 ; uchar cn_02[]={"I2C总线器件24C04,EEPROM数据存储器,4kBit EEPROM\n\r"};
0044 ; uchar cn_03[]={"单总线DS18B20温度传感器\n\r"};
0044 ; uchar cn_04[]={"RS232接口Max232A,主从接口(可与计算机或其他开发板通信)\n\r"};
0044 ; uchar cn_05[]={"20个输入按键、1个复位按键\n\r"};
0044 ; uchar cn_06[]={"8位动态扫描LED数码管、8位LED发光二极管\n\r"};
0044 ; uchar cn_07[]={"1个无源蜂鸣器\n\r"};
0044 ; uchar cn_08[]={"1路A/D输入可调电位器\n\r"};
0044 ; uchar cn_09[]={"LCD1602和LCD12864液晶接口\n\r"};
0044 ; uchar cn_10[]={"JTAG仿真接口\n\r"};
0044 ; uchar cn_11[]={"AVR ISP下载接口\n\r"};
0044 ; uchar cn_12[]={"DS1302时钟电路\n\r"};
0044 ; uchar cn_13[]={"所有IO口全部引出,方便扩展实验及测试\n\r"};
0044 ;
0044 ;
0044 ; ms(uint aa)
0044 ; {
0044 .dbline 30
0044 ; for(;aa>0;aa--);
0044 02C0 xjmp L12
0046 L9:
0046 .dbline 30
0046 L10:
0046 .dbline 30
0046 0150 subi R16,1
0048 1040 sbci R17,0
004A L12:
004A .dbline 30
004A 0030 cpi R16,0
004C 0107 cpc R16,R17
004E D9F7 brne L9
0050 X1:
0050 .dbline -2
0050 L8:
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r aa 16 i
0052 .dbend
0052 .dbfunc e write_cn _write_cn fV
0052 ; i -> R10
0052 ; cn_nub -> R12
0052 ; cn -> R14,R15
.even
0052 _write_cn::
0052 0E940000 xcall push_xgset00FC
0056 C22E mov R12,R18
0058 7801 movw R14,R16
005A .dbline -1
005A .dbline 34
005A ; }
005A ;
005A ; void write_cn(uchar *cn,uchar cn_nub)
005A ; {
005A .dbline 36
005A ; uchar i;
005A ; for(i=0;i<(cn_nub);i++)
005A AA24 clr R10
005C 0BC0 xjmp L17
005E L14:
005E .dbline 37
005E ; {
005E .dbline 38
005E ; uart_tx(cn[i]); //发送数据i
005E EA2D mov R30,R10
0060 FF27 clr R31
0062 EE0D add R30,R14
0064 FF1D adc R31,R15
0066 0081 ldd R16,z+0
0068 E9DF xcall _uart_tx
006A .dbline 39
006A ; PORTA=i;
006A ABBA out 0x1b,R10
006C .dbline 40
006C ; ms(60000);
006C 00E6 ldi R16,60000
006E 1AEE ldi R17,234
0070 E9DF xcall _ms
0072 .dbline 41
0072 ; }
0072 L15:
0072 .dbline 36
0072 A394 inc R10
0074 L17:
0074 .dbline 36
0074 AC14 cp R10,R12
0076 98F3 brlo L14
0078 X2:
0078 .dbline -2
0078 L13:
0078 .dbline 0 ; func end
0078 0C940000 xjmp pop_xgset00FC
007C .dbsym r i 10 c
007C .dbsym r cn_nub 12 c
007C .dbsym r cn 14 pc
007C .dbend
007C .dbfunc e main _main fI
007C ; rx_temp -> <dead>
007C ; i -> R10
.even
007C _main::
007C .dbline -1
007C .dbline 47
007C ; }
007C ;
007C ; //与计算机通信的程序
007C ; //计算机端使用超级终端,建立一个连接,9600,8位,1个停止位
007C ; main()
007C ; {
007C .dbline 48
007C ; uchar i=0,rx_temp;
007C AA24 clr R10
007E .dbline 49
007E ; init_devices(); //串行口初始化
007E D5DF xcall _init_devices
0080 .dbline 51
0080 ;
0080 ; DDRA=0xff;
0080 8FEF ldi R24,255
0082 8ABB out 0x1a,R24
0084 .dbline 52
0084 ; PORTA=0x00;
0084 2224 clr R2
0086 2BBA out 0x1b,R2
0088 .dbline 54
0088 ;
0088 ; ms(3000);
0088 08EB ldi R16,3000
008A 1BE0 ldi R17,11
008C DBDF xcall _ms
008E .dbline 55
008E ; write_cn(cn_00,16);
008E 20E1 ldi R18,16
0090 00E0 ldi R16,<_cn_00
0092 10E0 ldi R17,>_cn_00
0094 DEDF xcall _write_cn
0096 .dbline 56
0096 ; write_cn(cn_01,50);
0096 22E3 ldi R18,50
0098 00E0 ldi R16,<_cn_01
009A 10E0 ldi R17,>_cn_01
009C DADF xcall _write_cn
009E .dbline 57
009E ; write_cn(cn_02,50);
009E 22E3 ldi R18,50
00A0 00E0 ldi R16,<_cn_02
00A2 10E0 ldi R17,>_cn_02
00A4 D6DF xcall _write_cn
00A6 .dbline 58
00A6 ; write_cn(cn_03,25);
00A6 29E1 ldi R18,25
00A8 00E0 ldi R16,<_cn_03
00AA 10E0 ldi R17,>_cn_03
00AC D2DF xcall _write_cn
00AE .dbline 59
00AE ; write_cn(cn_04,59);
00AE 2BE3 ldi R18,59
00B0 00E0 ldi R16,<_cn_04
00B2 10E0 ldi R17,>_cn_04
00B4 CEDF xcall _write_cn
00B6 .dbline 60
00B6 ; write_cn(cn_05,27);
00B6 2BE1 ldi R18,27
00B8 00E0 ldi R16,<_cn_05
00BA 10E0 ldi R17,>_cn_05
00BC CADF xcall _write_cn
00BE .dbline 61
00BE ; write_cn(cn_06,40);
00BE 28E2 ldi R18,40
00C0 00E0 ldi R16,<_cn_06
00C2 10E0 ldi R17,>_cn_06
00C4 C6DF xcall _write_cn
00C6 .dbline 62
00C6 ; write_cn(cn_07,15);
00C6 2FE0 ldi R18,15
00C8 00E0 ldi R16,<_cn_07
00CA 10E0 ldi R17,>_cn_07
00CC C2DF xcall _write_cn
00CE .dbline 63
00CE ; write_cn(cn_08,23);
00CE 27E1 ldi R18,23
00D0 00E0 ldi R16,<_cn_08
00D2 10E0 ldi R17,>_cn_08
00D4 BEDF xcall _write_cn
00D6 .dbline 64
00D6 ; write_cn(cn_09,27);
00D6 2BE1 ldi R18,27
00D8 00E0 ldi R16,<_cn_09
00DA 10E0 ldi R17,>_cn_09
00DC BADF xcall _write_cn
00DE .dbline 65
00DE ; write_cn(cn_10,14);
00DE 2EE0 ldi R18,14
00E0 00E0 ldi R16,<_cn_10
00E2 10E0 ldi R17,>_cn_10
00E4 B6DF xcall _write_cn
00E6 .dbline 66
00E6 ; write_cn(cn_11,17);
00E6 21E1 ldi R18,17
00E8 00E0 ldi R16,<_cn_11
00EA 10E0 ldi R17,>_cn_11
00EC B2DF xcall _write_cn
00EE .dbline 67
00EE ; write_cn(cn_12,16);
00EE 20E1 ldi R18,16
00F0 00E0 ldi R16,<_cn_12
00F2 10E0 ldi R17,>_cn_12
00F4 AEDF xcall _write_cn
00F6 .dbline 68
00F6 ; write_cn(cn_13,38);
00F6 26E2 ldi R18,38
00F8 00E0 ldi R16,<_cn_13
00FA 10E0 ldi R17,>_cn_13
00FC AADF xcall _write_cn
00FE .dbline -2
00FE L18:
00FE .dbline 0 ; func end
00FE 0895 ret
0100 .dbsym l rx_temp 1 c
0100 .dbsym r i 10 c
0100 .dbend
0100 ; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?