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

📄 7289prog.lst

📁 ZLG7289测试程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    002A E5CF      LDI	R28,0x5F
    002B E0D4      LDI	R29,4
    002C BFCD      OUT	0x3D,R28
    002D BFDE      OUT	0x3E,R29
    002E 52C8      SUBI	R28,0x28
    002F 40D0      SBCI	R29,0
    0030 EA0A      LDI	R16,0xAA
    0031 8308      STD	Y+0,R16
    0032 2400      CLR	R0
    0033 E6E0      LDI	R30,0x60
    0034 E0F0      LDI	R31,0
    0035 E010      LDI	R17,0
    0036 36E0      CPI	R30,0x60
    0037 07F1      CPC	R31,R17
    0038 F011      BEQ	0x003B
    0039 9201      ST	R0,Z+
    003A CFFB      RJMP	0x0036
    003B 8300      STD	Z+0,R16
    003C E5E4      LDI	R30,0x54
    003D E0F0      LDI	R31,0
    003E E6A0      LDI	R26,0x60
    003F E0B0      LDI	R27,0
    0040 E010      LDI	R17,0
    0041 35E4      CPI	R30,0x54
    0042 07F1      CPC	R31,R17
    0043 F021      BEQ	0x0048
    0044 95C8      LPM
    0045 9631      ADIW	R30,1
    0046 920D      ST	R0,X+
    0047 CFF9      RJMP	0x0041
    0048 940E010C  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
_SETB:
  k                    --> R20
    004B 940E018C  CALL	push_gset1
    004D 2F40      MOV	R20,R16
FILE: F:\单片机编程\ICCAVR\7289prog\Test.c
(0001) #include <iom16v.h>
(0002) #define CS 0 
(0003) #define CLK 1 
(0004) #define DIO 2 
(0005) #define KEY 3 
(0006) 
(0007) void SETB(unsigned char k)
(0008) {//这里的PORTB根据自己的程序修改
(0009)   PORTB=PORTB|(1<<k);
    004E E001      LDI	R16,1
    004F 2F14      MOV	R17,R20
    0050 940E01B3  CALL	lsl8
    0052 B228      IN	R2,0x18
    0053 2A20      OR	R2,R16
    0054 BA28      OUT	0x18,R2
    0055 940E018F  CALL	pop_gset1
    0057 9508      RET
_CLRS:
  l                    --> R20
    0058 940E018C  CALL	push_gset1
    005A 2F40      MOV	R20,R16
(0010) }
(0011) 
(0012) void CLRS(unsigned char l)
(0013) {//这里的PORTB根据自己的程序修改
(0014)   PORTB=PORTB&~(1<<l);
    005B E001      LDI	R16,1
    005C 2F14      MOV	R17,R20
    005D 940E01B3  CALL	lsl8
    005F 2E20      MOV	R2,R16
    0060 9420      COM	R2
    0061 B238      IN	R3,0x18
    0062 2032      AND	R3,R2
    0063 BA38      OUT	0x18,R3
    0064 940E018F  CALL	pop_gset1
    0066 9508      RET
_Display:
  DataPos              --> Y+1
  datanum              --> R14
  cToDIO               --> R20
  iToDIO               --> R10
  num                  --> Y+0
  transdata            --> R22
  wait                 --> R12
  position             --> Y+14
  Data                 --> Y+12
    0067 940E0184  CALL	push_arg4
    0069 940E01AF  CALL	push_gset5
    006B 9722      SBIW	R28,2
(0015) }
(0016) 
(0017) //初始化显示时Data=0xA4,position=0xFF
(0018) //Data为显示数据,position为数据显示位置
(0019) //Data为10进制或16进制数,只能一位一位发送
(0020) //position为1-8的数字
(0021) void Display(unsigned char Data,unsigned char position)
(0022) {
(0023)   unsigned char DataPos=~0;
    006C EF8F      LDI	R24,0xFF
    006D 8389      STD	Y+1,R24
(0024)   unsigned char num=~0;
    006E 8388      STD	Y+0,R24
(0025)   unsigned char wait=~0;
    006F 2EC8      MOV	R12,R24
(0026)   unsigned char datanum=~0;
(0027)   unsigned int transdata=~0;
    0070 EF6F      LDI	R22,0xFF
    0071 EF7F      LDI	R23,0xFF
(0028)   unsigned int iToDIO=~0;
    0072 EF8F      LDI	R24,0xFF
    0073 EF9F      LDI	R25,0xFF
    0074 015C      MOVW	R10,R24
(0029)   unsigned char cToDIO=~0;
    0075 EF4F      LDI	R20,0xFF
(0030)   DDRB=0xFF;
    0076 BAA7      OUT	0x17,R10
(0031)   SETB(KEY);
    0077 E003      LDI	R16,3
    0078 DFD2      RCALL	_SETB
(0032)   SETB(CS);
    0079 2700      CLR	R16
    007A DFD0      RCALL	_SETB
(0033)   SETB(DIO);
    007B E002      LDI	R16,2
    007C DFCE      RCALL	_SETB
(0034)   datanum=2;
    007D E082      LDI	R24,2
    007E 2EE8      MOV	R14,R24
(0035)   CLRS(CS);
    007F 2700      CLR	R16
    0080 DFD7      RCALL	_CLRS
(0036)   if(Data!=0xA4)
    0081 858C      LDD	R24,Y+12
    0082 3A84      CPI	R24,0xA4
    0083 F409      BNE	0x0085
    0084 C04C      RJMP	0x00D1
(0037)   {
(0038)     DataPos=0xC8+position-1;
    0085 858E      LDD	R24,Y+14
    0086 5388      SUBI	R24,0x38
    0087 5081      SUBI	R24,1
    0088 8389      STD	Y+1,R24
(0039)     transdata=DataPos;
    0089 2F68      MOV	R22,R24
    008A 2777      CLR	R23
(0040) 	transdata=transdata<<8;
    008B 2F76      MOV	R23,R22
    008C 2766      CLR	R22
(0041) 	transdata=transdata+Data;
    008D 842C      LDD	R2,Y+12
    008E 2433      CLR	R3
    008F 0D62      ADD	R22,R2
    0090 1D73      ADC	R23,R3
    0091 C036      RJMP	0x00C8
(0042)     while(datanum--)
(0043)     {
(0044)       wait=25;
    0092 E189      LDI	R24,0x19
    0093 2EC8      MOV	R12,R24
(0045)       while(wait--)
    0094 2C2C      MOV	R2,R12
    0095 2433      CLR	R3
    0096 2D82      MOV	R24,R2
    0097 5081      SUBI	R24,1
    0098 2EC8      MOV	R12,R24
    0099 2022      TST	R2
    009A F7C9      BNE	0x0094
(0046) 	  {;}
(0047)       for(num=0;num<8;num++)
    009B 2400      CLR	R0
    009C 8208      STD	Y+0,R0
    009D C027      RJMP	0x00C5
(0048)       {
(0049)         iToDIO=transdata&0x8000;
    009E 01CB      MOVW	R24,R22
    009F 7080      ANDI	R24,0
    00A0 7890      ANDI	R25,0x80
    00A1 015C      MOVW	R10,R24
(0050)         transdata=transdata<<1;
    00A2 0F66      LSL	R22
    00A3 1F77      ROL	R23
(0051)         if(iToDIO==0x0000)
    00A4 3080      CPI	R24,0
    00A5 0789      CPC	R24,R25
    00A6 F419      BNE	0x00AA
(0052)         {
(0053)           CLRS(DIO);
    00A7 E002      LDI	R16,2
    00A8 DFAF      RCALL	_CLRS
(0054)         }
    00A9 C002      RJMP	0x00AC
(0055)         else
(0056)         {
(0057)           SETB(DIO);
    00AA E002      LDI	R16,2
    00AB DF9F      RCALL	_SETB
(0058)         }
(0059)         SETB(CLK);
    00AC E001      LDI	R16,1
    00AD DF9D      RCALL	_SETB
(0060)         wait=4;
    00AE E084      LDI	R24,4
    00AF 2EC8      MOV	R12,R24
(0061)         while(wait--)
    00B0 2C2C      MOV	R2,R12
    00B1 2433      CLR	R3
    00B2 2D82      MOV	R24,R2
    00B3 5081      SUBI	R24,1
    00B4 2EC8      MOV	R12,R24
    00B5 2022      TST	R2
    00B6 F7C9      BNE	0x00B0
(0062) 		{;}
(0063)         CLRS(CLK);
    00B7 E001      LDI	R16,1
    00B8 DF9F      RCALL	_CLRS
(0064)         wait=4;
    00B9 E084      LDI	R24,4
    00BA 2EC8      MOV	R12,R24
(0065)         while(wait--)
    00BB 2C2C      MOV	R2,R12
    00BC 2433      CLR	R3
    00BD 2D82      MOV	R24,R2
    00BE 5081      SUBI	R24,1
    00BF 2EC8      MOV	R12,R24
    00C0 2022      TST	R2
    00C1 F7C9      BNE	0x00BB
    00C2 8008      LDD	R0,Y+0
    00C3 9403      INC	R0
    00C4 8208      STD	Y+0,R0
    00C5 8188      LDD	R24,Y+0
    00C6 3088      CPI	R24,0x8
    00C7 F2B0      BCS	0x009E
    00C8 2C2E      MOV	R2,R14
    00C9 2433      CLR	R3
    00CA 2D82      MOV	R24,R2
    00CB 5081      SUBI	R24,1
    00CC 2EE8      MOV	R14,R24
    00CD 2022      TST	R2
    00CE F009      BEQ	0x00D0
    00CF CFC2      RJMP	0x0092
(0066) 		{;}
(0067)       }
(0068)     }
(0069)   }
    00D0 C034      RJMP	0x0105
(0070)   else
(0071)   {
(0072)       wait=25;
    00D1 E189      LDI	R24,0x19
    00D2 2EC8      MOV	R12,R24
(0073)       while(wait--);
    00D3 2C2C      MOV	R2,R12
    00D4 2433      CLR	R3
    00D5 2D82      MOV	R24,R2
    00D6 5081      SUBI	R24,1
    00D7 2EC8      MOV	R12,R24
    00D8 2022      TST	R2
    00D9 F7C9      BNE	0x00D3
(0074)       for(num=0;num<8;num++)
    00DA 2400      CLR	R0
    00DB 8208      STD	Y+0,R0
    00DC C025      RJMP	0x0102
(0075)       {
(0076)         cToDIO=Data&0x80;
    00DD 854C      LDD	R20,Y+12
    00DE 7840      ANDI	R20,0x80
(0077)         Data=Data<<1;
    00DF 842C      LDD	R2,Y+12
    00E0 0C22      LSL	R2
    00E1 862C      STD	Y+12,R2
(0078)         if(cToDIO==0x00)
    00E2 2344      TST	R20
    00E3 F419      BNE	0x00E7
(0079)         {

⌨️ 快捷键说明

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