📄 spi.lis
字号:
.module spi.c
.area text(rom, con, rel)
0000 .dbfile G:\燕洪成\gra_des\exper\spi\spi_slave\spi.c
0000 .dbfile G:\燕洪成\gra_des\exper\inc\myfun.h
0000 .dbfunc e Delayus _Delayus fV
0000 ; time -> R16,R17
.even
0000 _Delayus::
0000 .dbline -1
0000 .dbline 3
0000 ; //******DelayTime*******//
0000 ; void Delayus(int time)
0000 ; {
0000 L2:
0000 .dbline 5
0000 ; do
0000 ; time--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 L3:
0004 .dbline 6
0004 ; while(time>1);
0004 81E0 ldi R24,1
0006 90E0 ldi R25,0
0008 8017 cp R24,R16
000A 9107 cpc R25,R17
000C CCF3 brlt L2
000E X0:
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r time 16 I
0010 .dbend
0010 .dbfunc e Delayms _Delayms fV
0010 ; time -> R20,R21
.even
0010 _Delayms::
0010 4A93 st -y,R20
0012 5A93 st -y,R21
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 9
0016 ; }
0016 ; void Delayms(unsigned int time)
0016 ; {
0016 05C0 xjmp L7
0018 L6:
0018 .dbline 11
0018 ; while(time!=0)
0018 ; {
0018 .dbline 12
0018 ; Delayus(1000);
0018 08EE ldi R16,1000
001A 13E0 ldi R17,3
001C F1DF xcall _Delayus
001E .dbline 13
001E ; time--;
001E 4150 subi R20,1
0020 5040 sbci R21,0
0022 .dbline 14
0022 ; }
0022 L7:
0022 .dbline 10
0022 4030 cpi R20,0
0024 4507 cpc R20,R21
0026 C1F7 brne L6
0028 X1:
0028 .dbline -2
0028 L5:
0028 .dbline 0 ; func end
0028 5991 ld R21,y+
002A 4991 ld R20,y+
002C 0895 ret
002E .dbsym r time 20 i
002E .dbend
002E .dbfile G:\燕洪成\gra_des\exper\spi\spi_slave\spi.c
002E .dbfunc e PORT_Init _PORT_Init fV
.even
002E _PORT_Init::
002E .dbline -1
002E .dbline 14
002E ; // **************************************************************
002E ; // *** 实验: SPI Interface Slave ***
002E ; // *** 2007年10月13日 ***
002E ; // *** 目标MCU:MEGA168v 晶振:内部 8MHZ ***
002E ; // **************************************************************
002E ; //set_bit:PORTD |=(1<<PORTD3);
002E ; //clr_bit:PORTD &=~(1<<PORTD3);
002E ; #include<iom168v.h>
002E ; #include<macros.h>
002E ; #include<myfun.h>
002E ;
002E ; //**PORT_Init()**//
002E ; void PORT_Init()
002E ; {
002E .dbline 15
002E ; DDRD |=(1<<DDD7);//Interrupt output
002E 579A sbi 0xa,7
0030 .dbline 16
0030 ; PORTD |=(1<<PORTD7);//set high
0030 5F9A sbi 0xb,7
0032 .dbline -2
0032 L9:
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbend
0034 .dbfunc e USART_Init _USART_Init fV
.even
0034 _USART_Init::
0034 .dbline -1
0034 .dbline 30
0034 ; }
0034 ;
0034 ; //*************************************************
0034 ; //****************** USART **********************
0034 ; //*************************************************
0034 ; #define USART_DDR DDRD
0034 ; #define DDR_TX DDD1
0034 ; #define USART_PORT PORTD
0034 ; #define USART_RX PORTD0
0034 ; //***********串口初始化*******************************
0034 ; //内部8Mhz频率,设置波特率9.6k,8位数据位,
0034 ; //无校验,1位停止位
0034 ; void USART_Init(void)
0034 ; {
0034 .dbline 31
0034 ; USART_DDR |=(1<<DDR_TX); //set TX output
0034 519A sbi 0xa,1
0036 .dbline 32
0036 ; USART_PORT |=(1<<USART_RX); //RX pull up
0036 589A sbi 0xb,0
0038 .dbline 34
0038 ;
0038 ; UCSR0B = 0x00; //设置波特率之前先关闭串口
0038 2224 clr R2
003A 2092C100 sts 193,R2
003E .dbline 35
003E ; UCSR0A = 0x00;
003E 2092C000 sts 192,R2
0042 .dbline 36
0042 ; UBRR0H=0;
0042 2092C500 sts 197,R2
0046 .dbline 37
0046 ; UBRR0L=51;
0046 83E3 ldi R24,51
0048 8093C400 sts 196,R24
004C .dbline 39
004C ; //UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);//enable
004C ; UCSR0B=(1<<RXEN0)|(1<<TXEN0);
004C 88E1 ldi R24,24
004E 8093C100 sts 193,R24
0052 .dbline 40
0052 ; UCSR0C=(1<<UCSZ00)|(1<<UCSZ01);//8 data,1 stop
0052 86E0 ldi R24,6
0054 8093C200 sts 194,R24
0058 .dbline -2
0058 L10:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbend
005A .dbfunc e USART_Transmit _USART_Transmit fV
005A ; data -> R16
.even
005A _USART_Transmit::
005A .dbline -1
005A .dbline 44
005A ; }
005A ; //***************串口发送数据函数***************************
005A ; void USART_Transmit(unsigned char data) //查询方式发送接收字符函数
005A ; {
005A L12:
005A .dbline 46
005A ; while( !(UCSR0A & (1<<UDRE0))) //等待发送缓冲区为空
005A ; ;
005A L13:
005A .dbline 45
005A 2090C000 lds R2,192
005E 25FE sbrs R2,5
0060 FCCF rjmp L12
0062 X2:
0062 .dbline 47
0062 ; UDR0 = data;
0062 0093C600 sts 198,R16
0066 .dbline -2
0066 L11:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r data 16 c
0068 .dbend
0068 .dbfunc e SPI_SlaveInit _SPI_SlaveInit fV
.even
0068 _SPI_SlaveInit::
0068 .dbline -1
0068 .dbline 63
0068 ; }
0068 ; //*************************************************
0068 ; //**************** USART_over *********************
0068 ; //*************************************************
0068 ; //*************************************************
0068 ; //****************** SPI ************************
0068 ; //*************************************************
0068 ; #define DDR_SPI DDRB
0068 ; #define DDR_SS DDB2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -