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

📄 dac7512.lst

📁 这是atmega128单片机的数模转换程序
💻 LST
字号:
__start:
__text_start:
      46 EFCF      LDI	R28,0xFF
      47 E1D0      LDI	R29,0x10
      48 BFCD      OUT	0x3D,R28
      49 BFDE      OUT	0x3E,R29
      4A 51CE      SUBI	R28,0x1E
      4B 40D0      SBCI	R29,0
      4C EA0A      LDI	R16,0xAA
      4D 8308      STD	Y+0,R16
      4E 2400      CLR	R0
      4F E0E0      LDI	R30,0
      50 E0F1      LDI	R31,1
      51 E011      LDI	R17,1
      52 30E0      CPI	R30,0
      53 07F1      CPC	R31,R17
      54 F011      BEQ	0x0057
      55 9201      ST	R0,Z+
      56 CFFB      RJMP	0x0052
      57 8300      STD	Z+0,R16
      58 E8EC      LDI	R30,0x8C
      59 E0F0      LDI	R31,0
      5A E0A0      LDI	R26,0
      5B E0B1      LDI	R27,1
      5C E010      LDI	R17,0
      5D E000      LDI	R16,0
      5E BF0B      OUT	0x3B,R16
      5F 38EC      CPI	R30,0x8C
      60 07F1      CPC	R31,R17
      61 F021      BEQ	0x0066
      62 95C8      LPM
      63 9631      ADIW	R30,1
      64 920D      ST	R0,X+
      65 CFF9      RJMP	0x005F
      66 940E 008B CALL	_main
_exit:
      68 CFFF      RJMP	_exit
FILE: E:\产品\开发板\mega128-board\实验程序\数模转换\单电压输出\dac7512.c
(0001) #include<iom128v.h>
(0002) #define uchar unsigned char 
(0003) #define uint unsigned int 
(0004) 
(0005) //延时函数
(0006) void s_ms(unsigned int t)
(0007) {
(0008)     for(;t>1;t--)
_s_ms:
  t                    --> R16
      69 C002      RJMP	0x006C
      6A 5001      SUBI	R16,1
      6B 4010      SBCI	R17,0
      6C E081      LDI	R24,1
      6D E090      LDI	R25,0
      6E 1780      CP	R24,R16
      6F 0791      CPC	R25,R17
      70 F3C8      BCS	0x006A
      71 9508      RET
(0009)     {
(0010)     }
(0011) }
(0012) 
(0013) void spi_init()
(0014) {
(0015) DDRB=0xf7;   //端口设置
_spi_init:
      72 EF87      LDI	R24,0xF7
      73 BB87      OUT	0x17,R24
(0016) PORTB=0xff;
      74 EF8F      LDI	R24,0xFF
      75 BB88      OUT	0x18,R24
(0017) SPSR=0x00;
      76 2422      CLR	R2
      77 B82E      OUT	0x0E,R2
(0018) SPCR=0x5d;   //主机模式 方式0 ocs/16
      78 E58D      LDI	R24,0x5D
      79 B98D      OUT	0x0D,R24
      7A 9508      RET
_spi_send:
  spi_hi               --> R12
  spi_lo               --> R10
  spi_data             --> R16
      7B 940E 009F CALL	push_xgset003C
(0019) }
(0020) 
(0021) void spi_send(uint spi_data)
(0022) {
(0023) uchar spi_lo,spi_hi;
(0024) spi_lo=spi_data;
      7D 2EA0      MOV	R10,R16
(0025) spi_hi=spi_data>>8;
      7E 0168      MOVW	R12,R16
      7F 2CCD      MOV	R12,R13
      80 24DD      CLR	R13
(0026) 
(0027) PORTB&=~(1<<0);                //ss=0
      81 98C0      CBI	0x18,0
(0028) SPDR=spi_hi;
      82 B8CF      OUT	0x0F,R12
(0029) while(!(SPSR&(1<<SPIF)));
      83 9B77      SBIS	0x0E,7
      84 CFFE      RJMP	0x0083
(0030) SPDR=spi_lo;
      85 B8AF      OUT	0x0F,R10
(0031) while(!(SPSR&(1<<SPIF)));
      86 9B77      SBIS	0x0E,7
      87 CFFE      RJMP	0x0086
(0032) PORTB|=(1<<0);
      88 9AC0      SBI	0x18,0
      89 940C 0094 JMP	pop_xgset003C
(0033) }
(0034) //输出一个2.5v的电压
(0035) //主函数
(0036) main()
(0037) {
(0038) s_ms(50000);  //等待7512复位
_main:
      8B E500      LDI	R16,0x50
      8C EC13      LDI	R17,0xC3
      8D DFDB      RCALL	_s_ms
(0039) spi_init();
      8E DFE3      RCALL	_spi_init
(0040) spi_send(0x07ff);
      8F EF0F      LDI	R16,0xFF
      90 E017      LDI	R17,7
      91 DFE9      RCALL	_spi_send
(0041) while(1);
FILE: <library>
      92 CFFF      RJMP	0x0092
      93 9508      RET
pop_xgset003C:
      94 90A9      LD	R10,Y+
      95 90B9      LD	R11,Y+
      96 90C9      LD	R12,Y+
      97 90D9      LD	R13,Y+
      98 9508      RET
push_xgsetF0FC:
      99 937A      ST	R23,-Y
      9A 936A      ST	R22,-Y
push_xgset30FC:
      9B 935A      ST	R21,-Y
      9C 934A      ST	R20,-Y
push_xgset00FC:
      9D 92FA      ST	R15,-Y
      9E 92EA      ST	R14,-Y
push_xgset003C:
      9F 92DA      ST	R13,-Y
      A0 92CA      ST	R12,-Y
      A1 92BA      ST	R11,-Y
      A2 92AA      ST	R10,-Y
      A3 9508      RET

⌨️ 快捷键说明

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