📄 spi.lis
字号:
.module spi.c
.area text(rom, con, rel)
0000 .dbfile G:\燕洪成\gra_des\exper\spi\spi_master\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_master\spi.c
002E .dbfunc e USART_Init _USART_Init fV
.even
002E _USART_Init::
002E .dbline -1
002E .dbline 23
002E ; // **************************************************************
002E ; // *** 实验: SPI Interface Master ***
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 ; //*************************************************
002E ; //****************** USART **********************
002E ; //*************************************************
002E ; #define USART_DDR DDRD
002E ; #define DDR_TX DDD1
002E ; #define USART_PORT PORTD
002E ; #define USART_RX PORTD0
002E ; //***********串口初始化*******************************
002E ; //内部8Mhz频率,设置波特率9.6k,8位数据位,
002E ; //无校验,1位停止位
002E ; void USART_Init(void)
002E ; {
002E .dbline 24
002E ; USART_DDR |=(1<<DDR_TX); //set TX output
002E 519A sbi 0xa,1
0030 .dbline 25
0030 ; USART_PORT |=(1<<USART_RX); //RX pull up
0030 589A sbi 0xb,0
0032 .dbline 27
0032 ;
0032 ; UCSR0B = 0x00; //设置波特率之前先关闭串口
0032 2224 clr R2
0034 2092C100 sts 193,R2
0038 .dbline 28
0038 ; UCSR0A = 0x00;
0038 2092C000 sts 192,R2
003C .dbline 29
003C ; UBRR0H=0;
003C 2092C500 sts 197,R2
0040 .dbline 30
0040 ; UBRR0L=51;
0040 83E3 ldi R24,51
0042 8093C400 sts 196,R24
0046 .dbline 32
0046 ; //UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);//enable
0046 ; UCSR0B=(1<<RXEN0)|(1<<TXEN0);
0046 88E1 ldi R24,24
0048 8093C100 sts 193,R24
004C .dbline 33
004C ; UCSR0C=(1<<UCSZ00)|(1<<UCSZ01);//8 data,1 stop
004C 86E0 ldi R24,6
004E 8093C200 sts 194,R24
0052 .dbline -2
0052 L9:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e USART_Transmit _USART_Transmit fV
0054 ; data -> R16
.even
0054 _USART_Transmit::
0054 .dbline -1
0054 .dbline 38
0054 ; }
0054 ;
0054 ; //***************串口发送数据函数***************************
0054 ; void USART_Transmit(unsigned char data) //查询方式发送接收字符函数
0054 ; {
0054 L11:
0054 .dbline 40
0054 ; while( !(UCSR0A & (1<<UDRE0))) //等待发送缓冲区为空
0054 ; ;
0054 L12:
0054 .dbline 39
0054 2090C000 lds R2,192
0058 25FE sbrs R2,5
005A FCCF rjmp L11
005C X2:
005C .dbline 41
005C ; UDR0 = data;
005C 0093C600 sts 198,R16
0060 .dbline -2
0060 L10:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r data 16 c
0062 .dbend
0062 .dbfunc e SPI_MasterInit _SPI_MasterInit fV
.even
0062 _SPI_MasterInit::
0062 .dbline -1
0062 .dbline 58
0062 ; }
0062 ; //*************************************************
0062 ; //**************** USART_over *********************
0062 ; //*************************************************
0062 ; //*************************************************//
0062 ; //****************** SPI ************************//
0062 ; //*************************************************//
0062 ; #define DDR_SPI DDRB
0062 ; #define DDR_SS DDB2
0062 ; #define DDR_MOSI DDB3
0062 ; #define DDR_MISO DDB4
0062 ; #define DDR_SCK DDB5
0062 ; #define SPI_PORT PORTB
0062 ; #define SPI_SS PORTB2
0062 ; //**SPI_MasterInit()**//
0062 ; void SPI_MasterInit(void)
0062 ; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -