?? usart1.lst
字號:
__start:
__text_start:
0034 E5CF LDI R28,0x5F
0035 E0D4 LDI R29,4
0036 BFCD OUT 0x3D,R28
0037 BFDE OUT 0x3E,R29
0038 51C0 SUBI R28,0x10
0039 40D0 SBCI R29,0
003A EA0A LDI R16,0xAA
003B 8308 STD Y+0,R16
003C 2400 CLR R0
003D E7E3 LDI R30,0x73
003E E0F0 LDI R31,0
003F E010 LDI R17,0
0040 37E3 CPI R30,0x73
0041 07F1 CPC R31,R17
0042 F011 BEQ 0x0045
0043 9201 ST R0,Z+
0044 CFFB RJMP 0x0040
0045 8300 STD Z+0,R16
0046 E5E4 LDI R30,0x54
0047 E0F0 LDI R31,0
0048 E6A0 LDI R26,0x60
0049 E0B0 LDI R27,0
004A E010 LDI R17,0
004B 36E7 CPI R30,0x67
004C 07F1 CPC R31,R17
004D F021 BEQ 0x0052
004E 95C8 LPM
004F 9631 ADIW R30,1
0050 920D ST R0,X+
0051 CFF9 RJMP 0x004B
0052 940E0055 CALL _main
_exit:
0054 CFFF RJMP _exit
FILE: F:\LX\USART\usart1.c
(0001) #include<iom16v.h>
(0002) #define key (PIND&0x04) //定義按鍵PD2
(0003) /*****************函數(shù)原型聲明************************/
(0004) void USART_Init(unsigned int baud);
(0005) void USART_Transmit(unsigned char dat);
(0006) void delayms(unsigned int t);
(0007) unsigned char USART_Receive(void);
(0008) unsigned char strings[]="大學(xué)生電子創(chuàng)新協(xié)會";
(0009) /******************主函數(shù)****************************/
(0010) void main(void)
(0011) { unsigned char rec,i;
(0012) PORTB=0xff;
_main:
rec --> Y+1
i --> R20
0055 EF8F LDI R24,0xFF
0056 BB88 OUT 0x18,R24
(0013) DDRB=0xff;
0057 BB87 OUT 0x17,R24
(0014) PORTD=0x07;
0058 E087 LDI R24,7
0059 BB82 OUT 0x12,R24
(0015) DDRD=0x02;
005A E082 LDI R24,2
005B BB81 OUT 0x11,R24
(0016) USART_Init(71);//波特為9600,外部晶振11.0592
005C E407 LDI R16,0x47
005D E010 LDI R17,0
005E D00F RCALL _USART_Init
(0017) for(i=0;i<18;i++)
005F 2744 CLR R20
0060 C009 RJMP 0x006A
(0018) USART_Transmit(strings[i]);
0061 E680 LDI R24,0x60
0062 E090 LDI R25,0
0063 2FE4 MOV R30,R20
0064 27FF CLR R31
0065 0FE8 ADD R30,R24
0066 1FF9 ADC R31,R25
0067 8100 LDD R16,Z+0
0068 D00B RCALL _USART_Transmit
0069 9543 INC R20
006A 3142 CPI R20,0x12
006B F3A8 BCS 0x0061
(0019) while(1)
006C CFFF RJMP 0x006C
006D 9508 RET
(0020) { /*
(0021) if(key==0){ //按鍵按下發(fā)送一字節(jié)數(shù)據(jù)
(0022) delayms(10);
(0023) if(key==0){
(0024) while(!key);
(0025) for(i=0;i<18;i++)
(0026) USART_Transmit(strings[i]);
(0027) }
(0028) }
(0029) if(UCSRA&(1<<RXC)) //如果接收緩存區(qū)有數(shù)據(jù)*********
(0030) {
(0031) rec=USART_Receive();
(0032) USART_Transmit(rec);
(0033) }*/
(0034) }
(0035) }
(0036) /******************USART初始化***********************/
(0037) void USART_Init(unsigned int baud)
(0038) {
(0039) //UBRRH=(unsigned char)(baud/256);
(0040) UBRRL=(unsigned char)baud; //設(shè)定波特率
_USART_Init:
baud --> R16
006E B909 OUT 0x09,R16
(0041) UCSRB=0x18; //使能接收和發(fā)送
006F E188 LDI R24,0x18
0070 B98A OUT 0x0A,R24
(0042) UCSRC=0x8e; //設(shè)置幀格式8數(shù)據(jù)位,2停止位
0071 E88E LDI R24,0x8E
0072 BD80 OUT 0x20,R24
0073 9508 RET
(0043) }
(0044) /************發(fā)送函數(shù)****************************/
(0045) void USART_Transmit(unsigned char dat)
(0046) {
(0047) while(!(UCSRA&(1<<UDRE)));
_USART_Transmit:
dat --> R16
0074 9B5D SBIS 0x0B,5
0075 CFFE RJMP _USART_Transmit
(0048) UDR=dat;
0076 B90C OUT 0x0C,R16
0077 9508 RET
(0049) }
(0050) /************接收函數(shù)*****************************/
(0051) unsigned char USART_Receive(void)
(0052) {
(0053) while(!(UCSRA&(1<<RXC)));
_USART_Receive:
0078 9B5F SBIS 0x0B,7
0079 CFFE RJMP _USART_Receive
(0054) return UDR;
007A B10C IN R16,0x0C
007B 9508 RET
_delayms:
i --> R20
j --> R22
t --> R16
007C 940E009B CALL push_gset2
(0055) }
(0056) /**********延時*********************************/
(0057) void delayms(unsigned int t)
(0058) {
(0059) unsigned int i,j;
(0060) for(i=0;i<t;i++)
007E 2744 CLR R20
007F 2755 CLR R21
0080 C00B RJMP 0x008C
(0061) for(j=0;j<100;j++);
FILE: <library>
0081 2766 CLR R22
0082 2777 CLR R23
0083 C002 RJMP 0x0086
0084 5F6F SUBI R22,0xFF
0085 4F7F SBCI R23,0xFF
0086 3664 CPI R22,0x64
0087 E0E0 LDI R30,0
0088 077E CPC R23,R30
0089 F3D0 BCS 0x0084
008A 5F4F SUBI R20,0xFF
008B 4F5F SBCI R21,0xFF
008C 1740 CP R20,R16
008D 0751 CPC R21,R17
008E F390 BCS 0x0081
008F 940E0092 CALL pop_gset2
0091 9508 RET
pop_gset2:
0092 E0E2 LDI R30,2
0093 940C00A1 JMP pop
push_gset5:
0095 92FA ST R15,-Y
0096 92EA ST R14,-Y
push_gset4:
0097 92DA ST R13,-Y
0098 92CA ST R12,-Y
push_gset3:
0099 92BA ST R11,-Y
009A 92AA ST R10,-Y
push_gset2:
009B 937A ST R23,-Y
009C 936A ST R22,-Y
push_gset1:
009D 935A ST R21,-Y
009E 934A ST R20,-Y
009F 9508 RET
pop_gset1:
00A0 E0E1 LDI R30,1
pop:
00A1 9149 LD R20,Y+
00A2 9159 LD R21,Y+
00A3 FDE0 SBRC R30,0
00A4 9508 RET
00A5 9169 LD R22,Y+
00A6 9179 LD R23,Y+
00A7 FDE1 SBRC R30,1
00A8 9508 RET
00A9 90A9 LD R10,Y+
00AA 90B9 LD R11,Y+
00AB FDE2 SBRC R30,2
00AC 9508 RET
00AD 90C9 LD R12,Y+
00AE 90D9 LD R13,Y+
00AF FDE3 SBRC R30,3
00B0 9508 RET
00B1 90E9 LD R14,Y+
00B2 90F9 LD R15,Y+
00B3 9508 RET
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -