⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 model.lst

📁 SPI简单的数据传输.用单片595传输数据.简单易懂
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
      21 E5CF      LDI	R28,0x5F
      22 E0D4      LDI	R29,4
      23 BFCD      OUT	0x3D,R28
      24 BFDE      OUT	0x3E,R29
      25 52C0      SUBI	R28,0x20
      26 40D0      SBCI	R29,0
      27 EA0A      LDI	R16,0xAA
      28 8308      STD	Y+0,R16
      29 2400      CLR	R0
      2A E7EC      LDI	R30,0x7C
      2B E0F0      LDI	R31,0
      2C E010      LDI	R17,0
      2D 37EC      CPI	R30,0x7C
      2E 07F1      CPC	R31,R17
      2F F011      BEQ	0x0032
      30 9201      ST	R0,Z+
      31 CFFB      RJMP	0x002D
      32 8300      STD	Z+0,R16
      33 E2E6      LDI	R30,0x26
      34 E0F0      LDI	R31,0
      35 E6A0      LDI	R26,0x60
      36 E0B0      LDI	R27,0
      37 E010      LDI	R17,0
      38 E000      LDI	R16,0
      39 BF0B      OUT	0x3B,R16
      3A 34E2      CPI	R30,0x42
      3B 07F1      CPC	R31,R17
      3C F021      BEQ	0x0041
      3D 95C8      LPM
      3E 9631      ADIW	R30,1
      3F 920D      ST	R0,X+
      40 CFF9      RJMP	0x003A
      41 D0DF      RCALL	_main
_exit:
      42 CFFF      RJMP	_exit
FILE: E:\学习\实践班\单片机程序\硬件SPI\SPI_595\Project_Template_Basic\EX_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化驱动函数库                   *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:HD_Support.h                               *
(0013) *   需要版本:  -----                                      *
(0014) *   支持库说明:底层硬件初始化声明库                       *
(0015) *                                                          *
(0016) *   支持库名称:EX_Support.h                               *
(0017) *   需要版本:  -----                                      *
(0018) *   支持库说明:底层硬件初始化驱动声明库                   *
(0019) *                                                          *
(0020) *   支持库名称:PF_Config.h                                *
(0021) *   需要版本:  -----                                      *
(0022) *   支持库说明:硬件平台配置声明库                         *
(0023) * -------------------------------------------------------- *
(0024) *  [版本更新]                                              *
(0025) *   修改:                                                 *
(0026) *   修改日期:                                             *
(0027) *   版本:                                                 *
(0028) * -------------------------------------------------------- *
(0029) *  [版本历史]                                              *
(0030) * -------------------------------------------------------- *
(0031) *  [使用说明]                                              *
(0032) ***********************************************************/
(0033) 
(0034) /********************
(0035) * 头 文 件 配 置 区 *
(0036) ********************/
(0037) # include "PF_Config.h"
(0038) # include "Ex_Support.h"
(0039) 
(0040) /********************
(0041) *   系 统 宏 定 义  *
(0042) ********************/
(0043) 
(0044) /*------------------*
(0045) *   常 数 宏 定 义  *
(0046) *------------------*/
(0047) 
(0048) /*------------------*
(0049) *   动 作 宏 定 义  *
(0050) *------------------*/
(0051) 
(0052) /********************
(0053) *  模块结构体定义区 *
(0054) ********************/
(0055) 
(0056) /********************
(0057) *   函 数 声 明 区  *
(0058) ********************/
(0059) void Insert_Timer0_OVF_ISR_Code(void);
(0060) void Driver_INIT(void);
(0061) void Delay_MS(uint16 wTime);
(0062) void Insert_SPI_STC_ISR_Code(void);
(0063) 
(0064) /********************
(0065) *   模块函数声明区  *
(0066) ********************/
(0067) 
(0068) 
(0069) /********************
(0070) *   模块变量声明区  *
(0071) ********************/
(0072) static uint16 s_wSystemDelayTimerCounter = 0;
(0073) static const unsigned char s_cDISPCode[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
(0074) 	  	   		 	  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
(0075) 					  0x00,0x40,0x08,0x01,0x63,0x39,0x0f};
(0076) /********************
(0077) *   全局变量声明区  *
(0078) ********************/
(0079) uint16 g_wSystemTimer = 0;
(0080) UINT8 g_chCounter = 0;
(0081) 
(0082) /***********************************************************
(0083) *   函数说明:软件驱动初始化函数                           *
(0084) *   输入:    无                                           *
(0085) *   输出:    无                                           *
(0086) *   调用函数:无                                           *
(0087) ***********************************************************/
(0088) void Driver_INIT(void)
(0089) {
_Driver_INIT:
      43 9508      RET
(0090)     //*在这里插入你的各类软件驱动初始化代码*//
(0091) }
(0092) 
(0093) /***********************************************************
(0094) *   函数说明:系统毫秒延时函数                             *
(0095) *   输入:    需要延时的时间长度                           *
(0096) *   输出:    无                                           *
(0097) *   调用函数:无                                           *
(0098) ***********************************************************/
(0099) void Delay_MS(uint16 wTime)
(0100) {
(0101)     s_wSystemDelayTimerCounter = wTime;
_Delay_MS:
  wTime                --> R16
      44 9310 0061 STS	0x0061,R17
      46 9300 0060 STS	0x0060,R16
(0102)     
(0103)     while(s_wSystemDelayTimerCounter);
      48 9020 0060 LDS	R2,0x0060
      4A 9030 0061 LDS	R3,0x0061
      4C 2022      TST	R2
      4D F7D1      BNE	0x0048
      4E 2033      TST	R3
      4F F7C1      BNE	0x0048
      50 9508      RET
(0104) }
(0105) 
(0106) /***********************************************************
(0107) *   函数说明:定时器0中断处理程序代码插入函数              *
(0108) *   输入:    无                                           *
(0109) *   输出:    无                                           *
(0110) *   调用函数:无                                           *
(0111) ***********************************************************/
(0112) void Insert_Timer0_OVF_ISR_Code(void)
(0113) {
(0114)     g_wSystemTimer++;
_Insert_Timer0_OVF_ISR_Code:
      51 9180 0079 LDS	R24,g_wSystemTimer
      53 9190 007A LDS	R25,g_wSystemTimer+1
      55 9601      ADIW	R24,1
      56 9390 007A STS	g_wSystemTimer+1,R25
      58 9380 0079 STS	g_wSystemTimer,R24
(0115) 
(0116)     if (s_wSystemDelayTimerCounter)         //若计数器累加不为零
      5A 9020 0060 LDS	R2,0x0060
      5C 9030 0061 LDS	R3,0x0061
      5E 2022      TST	R2
      5F F411      BNE	0x0062
      60 2033      TST	R3
      61 F031      BEQ	0x0068
(0117)     {
(0118)         s_wSystemDelayTimerCounter--;        
      62 01C1      MOVW	R24,R2
      63 9701      SBIW	R24,1
      64 9390 0061 STS	0x0061,R25
      66 9380 0060 STS	0x0060,R24
(0119)     }
(0120)     
(0121)     if (!(g_wSystemTimer & (BIT(10) - 1)))     //除以2的10次方取余为0
      68 9180 0079 LDS	R24,g_wSystemTimer
      6A 9190 007A LDS	R25,g_wSystemTimer+1
      6C 7093      ANDI	R25,3
      6D 3080      CPI	R24,0
      6E 0789      CPC	R24,R25
      6F F441      BNE	0x0078
(0122)     {
(0123)         g_chCounter++;
      70 9180 007B LDS	R24,g_chCounter
      72 5F8F      SUBI	R24,0xFF
      73 9380 007B STS	g_chCounter,R24
(0124)         g_chCounter &= (BIT(4)-1);            //对2的4次方取余
      75 708F      ANDI	R24,0xF
      76 9380 007B STS	g_chCounter,R24
(0125)     }
      78 9508      RET
_Insert_SPI_STC_ISR_Code:
  n1                   --> R22
  bIfKeyPressed0       --> R20
  chKeyNUM0            --> R10
      79 D0AF      RCALL	push_xgsetF00C
(0126) }
(0127) 
(0128) void Insert_SPI_STC_ISR_Code(void)
(0129) {
(0130)     UINT8 chKeyNUM = ~SPDR;    //读取数据寄存器存贮的数据 
      7A B0AF      IN	R10,0x0F
      7B 94A0      COM	R10
(0131)     UINT8 n = 0;
(0132)     BOOL bIfKeyPressed = FALSE;
      7C 2744      CLR	R20
(0133)     
(0134)     PORT_SS = HIGH;            //SS拉高
      7D B388      IN	R24,0x18
      7E 6084      ORI	R24,4
      7F BB88      OUT	0x18,R24
(0135) 	PORT_SS = LOW;             //ss拉低
      80 B388      IN	R24,0x18
      81 7F8B      ANDI	R24,0xFB
      82 BB88      OUT	0x18,R24
(0136)     for (n = 0;n < 8;n++)      //读取数据的每一位 
      83 2766      CLR	R22
      84 C012      RJMP	0x0097
(0137)     {
(0138)         if (chKeyNUM & BIT(n))     //读取第n位
      85 E001      LDI	R16,1
      86 2F16      MOV	R17,R22
      87 D0AF      RCALL	lsl8
      88 2C2A      MOV	R2,R10
      89 2220      AND	R2,R16
      8A F059      BEQ	0x0096
(0139)         {
(0140)             SPDR = ~s_cDISPCode[n];    
      8B E682      LDI	R24,0x62
      8C E090      LDI	R25,0
      8D 2FE6      MOV	R30,R22
      8E 27FF      CLR	R31
      8F 0FE8      ADD	R30,R24
      90 1FF9      ADC	R31,R25
      91 8020      LDD	R2,Z+0
      92 9420      COM	R2
      93 B82F      OUT	0x0F,R2
(0141)             bIfKeyPressed = TRUE;
      94 E041      LDI	R20,1
(0142)             break;
      95 C003      RJMP	0x0099
      96 9563      INC	R22
      97 3068      CPI	R22,0x8
      98 F360      BCS	0x0085
(0143)         }
(0144)     }
(0145)     
(0146)     if (!bIfKeyPressed)
      99 2344      TST	R20
      9A F451      BNE	0x00A5
(0147)     {
(0148)         SPDR = ~s_cDISPCode[g_chCounter];
      9B E682      LDI	R24,0x62
      9C E090      LDI	R25,0
      9D 91E0 007B LDS	R30,g_chCounter
      9F 27FF      CLR	R31
      A0 0FE8      ADD	R30,R24
      A1 1FF9      ADC	R31,R25
      A2 8020      LDD	R2,Z+0
      A3 9420      COM	R2
      A4 B82F      OUT	0x0F,R2
(0149)     }
      A5 C08A      RJMP	pop_xgsetF00C
FILE: E:\学习\实践班\单片机程序\硬件SPI\SPI_595\Project_Template_Basic\HD_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化函数库                       *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:HD_Support.h                               *
(0013) *   需要版本:  -----                                      *
(0014) *   支持库说明:底层硬件初始化声明库                       *
(0015) *                                                          *
(0016) *   支持库名称:PF_Config.h                                *
(0017) *   需要版本:  -----                                      *
(0018) *   支持库说明:硬件平台配置声明库                         *
(0019) * -------------------------------------------------------- *
(0020) *  [版本更新]                                              *
(0021) *   修改:                                                 *
(0022) *   修改日期:                                             *
(0023) *   版本:                                                 *
(0024) * -------------------------------------------------------- *
(0025) *  [版本历史]                                              *
(0026) * -------------------------------------------------------- *
(0027) *  [使用说明]                                              *
(0028) ***********************************************************/
(0029) 
(0030) /********************
(0031) * 头 文 件 配 置 区 *
(0032) ********************/
(0033) # include "PF_Config.h"
(0034) # include "HD_Support.h"
(0035) 
(0036) /********************
(0037) *   系 统 宏 定 义  *
(0038) ********************/
(0039) # pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
(0040) # pragma interrupt_handler SPI_STC_ISR:iv_SPI_STC
(0041) /*------------------*
(0042) *   常 数 宏 定 义  *
(0043) *------------------*/
(0044) 
(0045) /*------------------*
(0046) *   动 作 宏 定 义  *
(0047) *------------------*/
(0048) #ifndef INSERT_TIMER0_OVF_ISR_CODE
(0049)     # define INSERT_TIMER0_OVF_ISR_CODE
(0050)     # warning "TIMER0_OVF_ISR haven`t been used but initialed!"
(0051) #endif
(0052) #ifndef INSERT_SPI_STC_ISR_CODE
(0053)     # define INSERT_SPI_STC_ISR_CODE
(0054)     # warning "SPI_STC_ISR haven`t been used but initialed!"
(0055) #endif
(0056) 
(0057) /********************
(0058) *  模块结构体定义区 *
(0059) ********************/
(0060) 
(0061) /********************
(0062) *   函 数 声 明 区  *
(0063) ********************/
(0064) void Device_INIT(void);
(0065) 
(0066) /********************
(0067) *   模块函数声明区  *
(0068) ********************/
(0069) static void Port_INIT(void);
(0070) static void Timer0_INIT(void);
(0071) static void SPI_INIT(void);
(0072) 
(0073) /********************
(0074) *   模块变量声明区  *
(0075) ********************/
(0076) 
(0077) /********************
(0078) *   全局变量声明区  *
(0079) ********************/
(0080) 
(0081) 
(0082) /***********************************************************
(0083) *   函数说明:系统硬件初始化函数                           *
(0084) *   输入:    无                                           *
(0085) *   输出:    无                                           *
(0086) *   调用函数:Port_INIT()   Timer0_INIT()                  *
(0087) ***********************************************************/
(0088) void Device_INIT(void)
(0089) {
(0090)     Port_INIT();
_Device_INIT:
      A6 D038      RCALL	HD_Support.c:Port_INIT
(0091)     Timer0_INIT();
      A7 D03C      RCALL	_Timer0_INIT
(0092)     SPI_INIT();
      A8 D003      RCALL	_SPI_INIT
(0093)     //*在这里添加其他初始化函数*//
(0094)     
(0095)     TIMSK = BIT(TOIE0);                                    //启动定时期0溢出中断资源
      A9 E081      LDI	R24,1
      AA BF89      OUT	0x39,R24
      AB 9508      RET
(0096)     //*在这里添加其他全局寄存器的初始化代码*//
(0097) }
(0098) 
(0099) /***********************************************************
(0100) *   函数说明:SPI硬件初始化函数                            *
(0101) *   输入:    无                                           *
(0102) *   输出:    无                                           *
(0103) *   调用函数:无                                           *
(0104) ***********************************************************/
(0105) static void SPI_INIT(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -