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

📄 spi.lst

📁 ISD1720芯片实现录音,定点录音,播放,定点播放等.
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0155)     LCD_write_char( address, 0 );
    010C 2722      CLR	R18
    010D 2733      CLR	R19
    010E 2F04      MOV	R16,R20
    010F 2711      CLR	R17
    0110 DF87      RCALL	_LCD_write_char
    0111 940E0326  CALL	pop_gset2
    0113 9508      RET
_LCD_write_string:
  s                    --> R20
  Y                    --> R10
  X                    --> R22
    0114 940E0333  CALL	push_gset3
    0116 2EA2      MOV	R10,R18
    0117 2F60      MOV	R22,R16
    0118 814E      LDD	R20,Y+6
    0119 815F      LDD	R21,Y+7
(0156)   }
(0157) /*-----------------------------------------------------------------------
(0158) LCD_write_string  : 英文字符串显示函数
(0159) LCD_write_dan_data:显示0~10内的单个十进制数
(0160) LCD_write_chang_dat:显示0~4294967295内的任意一个数
(0161) 输入参数:*s      :英文字符串指针;
(0162)           X、Y    : 显示字符串的位置 
(0163) -----------------------------------------------------------------------*/
(0164) void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
(0165)   {
(0166)     LCD_set_xy( X, Y );       ///显示字符串
    011A 2D2A      MOV	R18,R10
    011B 2F06      MOV	R16,R22
    011C DFE4      RCALL	_LCD_set_xy
    011D C008      RJMP	0x0126
(0167)     while (*s) 
(0168)       {
(0169)         LCD_write_char( 0, *s );
    011E 01FA      MOVW	R30,R20
    011F 8120      LDD	R18,Z+0
    0120 2733      CLR	R19
    0121 2700      CLR	R16
    0122 2711      CLR	R17
    0123 DF74      RCALL	_LCD_write_char
(0170) 		s ++;
    0124 5F4F      SUBI	R20,0xFF
    0125 4F5F      SBCI	R21,0xFF
    0126 01FA      MOVW	R30,R20
    0127 8020      LDD	R2,Z+0
    0128 2022      TST	R2
    0129 F7A1      BNE	0x011E
    012A 940E0329  CALL	pop_gset3
    012C 9508      RET
_LCD_write_dan_data:
  i                    --> R20
  z                    --> Y+4
  Y                    --> R22
  X                    --> R20
    012D 940E0335  CALL	push_gset2
    012F 2F62      MOV	R22,R18
    0130 2F40      MOV	R20,R16
(0171)       }
(0172)   }
(0173) void LCD_write_dan_data(unsigned char X,unsigned char Y,unsigned char z)
(0174) {
(0175)  unsigned char i;            //显示一个字节数字
(0176)  LCD_set_xy( X, Y );
    0131 2F26      MOV	R18,R22
    0132 2F04      MOV	R16,R20
    0133 DFCD      RCALL	_LCD_set_xy
(0177)  i=z+'0';
    0134 814C      LDD	R20,Y+4
    0135 5D40      SUBI	R20,0xD0
(0178)  LCD_write_char(0,i);
    0136 2F24      MOV	R18,R20
    0137 2733      CLR	R19
    0138 2700      CLR	R16
    0139 2711      CLR	R17
    013A DF5D      RCALL	_LCD_write_char
    013B 940E0326  CALL	pop_gset2
    013D 9508      RET
_LCD_write_chang_data:
  i                    --> R10
  z                    --> Y+8
  Y                    --> R12
  X                    --> R10
    013E 940E0331  CALL	push_gset4
    0140 2EC2      MOV	R12,R18
    0141 2EA0      MOV	R10,R16
(0179)  }
(0180) void LCD_write_chang_data(unsigned char X,unsigned char Y, unsigned long z)
(0181) {
(0182)  unsigned char i;            //显示一个长字节数字(0~4294967295)
(0183)  LCD_set_xy( X, Y );     //注:现在显的数是个位开始的
    0142 2D2C      MOV	R18,R12
    0143 2D0A      MOV	R16,R10
    0144 DFBC      RCALL	_LCD_set_xy
    0145 C037      RJMP	0x017D
(0184)  while(z)
(0185)  {
(0186)   i=z%10+'0';
    0146 E04A      LDI	R20,0xA
    0147 E050      LDI	R21,0
    0148 E060      LDI	R22,0
    0149 E070      LDI	R23,0
    014A 01FE      MOVW	R30,R28
    014B 8420      LDD	R2,Z+8
    014C 8431      LDD	R3,Z+9
    014D 8442      LDD	R4,Z+10
    014E 8453      LDD	R5,Z+11
    014F 937A      ST	R23,-Y
    0150 936A      ST	R22,-Y
    0151 935A      ST	R21,-Y
    0152 934A      ST	R20,-Y
    0153 0181      MOVW	R16,R2
    0154 0192      MOVW	R18,R4
    0155 940E02B7  CALL	mod32u
    0157 0118      MOVW	R2,R16
    0158 0129      MOVW	R4,R18
    0159 E340      LDI	R20,0x30
    015A E050      LDI	R21,0
    015B E060      LDI	R22,0
    015C E070      LDI	R23,0
    015D 0E24      ADD	R2,R20
    015E 1E35      ADC	R3,R21
    015F 1E46      ADC	R4,R22
    0160 1E57      ADC	R5,R23
    0161 2CA2      MOV	R10,R2
(0187)   z=z/10;
    0162 E04A      LDI	R20,0xA
    0163 E050      LDI	R21,0
    0164 E060      LDI	R22,0
    0165 E070      LDI	R23,0
    0166 01FE      MOVW	R30,R28
    0167 8420      LDD	R2,Z+8
    0168 8431      LDD	R3,Z+9
    0169 8442      LDD	R4,Z+10
    016A 8453      LDD	R5,Z+11
    016B 937A      ST	R23,-Y
    016C 936A      ST	R22,-Y
    016D 935A      ST	R21,-Y
    016E 934A      ST	R20,-Y
    016F 0181      MOVW	R16,R2
    0170 0192      MOVW	R18,R4
    0171 940E02B5  CALL	div32u
    0173 01FE      MOVW	R30,R28
    0174 8700      STD	Z+8,R16
    0175 8711      STD	Z+9,R17
    0176 8722      STD	Z+10,R18
    0177 8733      STD	Z+11,R19
(0188)  LCD_write_char(0,i);
    0178 2D2A      MOV	R18,R10
    0179 2733      CLR	R19
    017A 2700      CLR	R16
    017B 2711      CLR	R17
    017C DF1B      RCALL	_LCD_write_char
    017D E040      LDI	R20,0
    017E E050      LDI	R21,0
    017F E060      LDI	R22,0
    0180 E070      LDI	R23,0
    0181 01FE      MOVW	R30,R28
    0182 8420      LDD	R2,Z+8
    0183 8431      LDD	R3,Z+9
    0184 8442      LDD	R4,Z+10
    0185 8453      LDD	R5,Z+11
    0186 1624      CP	R2,R20
    0187 0635      CPC	R3,R21
    0188 0646      CPC	R4,R22
    0189 0657      CPC	R5,R23
    018A F009      BEQ	0x018C
    018B CFBA      RJMP	0x0146
    018C 940E032C  CALL	pop_gset4
    018E 9508      RET
_delayms:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    018F 940E0335  CALL	push_gset2
FILE: E:\写的程序\AVR(C)\延时子程序.c
(0001) #include"iom16v.h"
(0002) #include"macros.h"
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) 
(0006) //***************************************************
(0007) /*ms延时*/
(0008) //***************************************************
(0009) void delayms(uint k)
(0010) {
(0011)  uint i,j;
(0012)  for(i=0;i<k;i++)
    0191 2744      CLR	R20
    0192 2755      CLR	R21
    0193 C00B      RJMP	0x019F
(0013)   for(j=0;j<1441;j++);
    0194 2766      CLR	R22
    0195 2777      CLR	R23
    0196 C002      RJMP	0x0199
    0197 5F6F      SUBI	R22,0xFF
    0198 4F7F      SBCI	R23,0xFF
    0199 3A61      CPI	R22,0xA1
    019A E0E5      LDI	R30,5
    019B 077E      CPC	R23,R30
    019C F3D0      BCS	0x0197
    019D 5F4F      SUBI	R20,0xFF
    019E 4F5F      SBCI	R21,0xFF
    019F 1740      CP	R20,R16
    01A0 0751      CPC	R21,R17
    01A1 F390      BCS	0x0194
    01A2 940E0326  CALL	pop_gset2
    01A4 9508      RET
_delayus:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    01A5 940E0335  CALL	push_gset2
(0014) }
(0015) //***************************************************
(0016) /*us延时*/
(0017) //***************************************************
(0018) void delayus(uint k)
(0019) {
(0020)  uint i,j;
(0021)  for(i=0;i<k;i++)
    01A7 2744      CLR	R20
    01A8 2755      CLR	R21
    01A9 C00B      RJMP	0x01B5
(0022)   for(j=0;j<8;j++);
    01AA 2766      CLR	R22
    01AB 2777      CLR	R23
    01AC C002      RJMP	0x01AF
    01AD 5F6F      SUBI	R22,0xFF
    01AE 4F7F      SBCI	R23,0xFF
    01AF 3068      CPI	R22,0x8
    01B0 E0E0      LDI	R30,0
    01B1 077E      CPC	R23,R30
    01B2 F3D0      BCS	0x01AD
    01B3 5F4F      SUBI	R20,0xFF
    01B4 4F5F      SBCI	R21,0xFF
    01B5 1740      CP	R20,R16
    01B6 0751      CPC	R21,R17
    01B7 F390      BCS	0x01AA
    01B8 940E0326  CALL	pop_gset2
    01BA 9508      RET
_delays:
  i                    --> R20
  k                    --> R22
    01BB 940E0335  CALL	push_gset2
    01BD 01B8      MOVW	R22,R16
(0023) }
(0024) //***************************************************
(0025) /*s延时*/
(0026) //***************************************************
(0027) void delays(uint k)
(0028) {
(0029)  uint i;
(0030)  for(i=0;i<k;i++)
    01BE 2744      CLR	R20
    01BF 2755      CLR	R21
    01C0 C005      RJMP	0x01C6
(0031)     delayms(1000);
    01C1 EE08      LDI	R16,0xE8
    01C2 E013      LDI	R17,3
    01C3 DFCB      RCALL	_delayms
    01C4 5F4F      SUBI	R20,0xFF
    01C5 4F5F      SBCI	R21,0xFF
    01C6 1746      CP	R20,R22
    01C7 0757      CPC	R21,R23
    01C8 F3C0      BCS	0x01C1
    01C9 940E0326  CALL	pop_gset2
    01CB 9508      RET
_key_scan:
  j                    --> R10
  key                  --> R20
  i                    --> R12
    01CC 940E0331  CALL	push_gset4
FILE: E:\写的程序\AVR(C)\4X4键盘.c
(0001) /*********************************************************************
(0002)            注意在调用时要初始化DDRA=0xff;
(0003) 		   这最好是用中断扫描键盘,在中断里先保存以前DDRA的数值;
(0004) 		   扫描完后再恢复以前的DDRA的值
(0005) ***********************************************************************/
(0006) #include <iom16v.h>
(0007) #include <macros.h>
(0008) #include"延时子程序.c"
(0009) #define  uchar unsigned char
(0010) #define  uint  unsigned int
(0011) 
(0012) uchar key_scan()
(0013) { 
(0014)   uchar i=0X7F,key,j=0;
    01CE E78F      LDI	R24,0x7F
    01CF 2EC8      MOV	R12,R24
    01D0 24AA      CLR	R10
(0015)   delayms(1);
    01D1 E001      LDI	R16,1
    01D2 E010      LDI	R17,0
    01D3 DFBB      RCALL	_delayms
(0016)  do
(0017)  { 
(0018)    i=(i<<1|i>>7);
    01D4 2C2C      MOV	R2,R12
    01D5 9426      LSR	R2
    01D6 9426      LSR	R2
    01D7 9426      LSR	R2
    01D8 9426      LSR	R2
    01D9 9426      LSR	R2
    01DA 9426      LSR	R2
    01DB 9426      LSR	R2
    01DC 2C3C      MOV	R3,R12
    01DD 0C33      LSL	R3
    01DE 2832      OR	R3,R2
    01DF 2CC3      MOV	R12,R3
(0019)    PORTD=i;
    01E0 BA32      OUT	0x12,R3
(0020)    DDRD=0x0F;
    01E1 E08F      LDI	R24,0xF
    01E2 BB81      OUT	0x11,R24
(0021)    key=PIND;
    01E3 B340      IN	R20,0x10
(0022)    j=key&0xF0;
    01E4 2F84      MOV	R24,R20
    01E5 7F80      ANDI	R24,0xF0
    01E6 2EA8      MOV	R10,R24
(0023)    }while(j==0xF0);
    01E7 2D8A      MOV	R24,R10
    01E8 3F80      CPI	R24,0xF0
    01E9 F351      BEQ	0x01D4
(0024)    switch(key)
    01EA 2F64      MOV	R22,R20
    01EB 2777      CLR	R23
    01EC 3B67      CPI	R22,0xB7
    01ED E0E0      LDI	R30,0
    01EE 077E      CPC	R23,R30
    01EF F409      BNE	0x01F1
    01F0 C05C      RJMP	0x024D
    01F1 3B6B      CPI	R22,0xBB
    01F2 E0E0      LDI	R30,0
    01F3 077E      CPC	R23,R30
    01F4 F409      BNE	0x01F6
    01F5 C055      RJMP	0x024B
    01F6 3B6D      CPI	R22,0xBD
    01F7 E0E0      LDI	R30,0
    01F8 077E      CPC	R23,R30
    01F9 F409      BNE	0x01FB
    01FA C04E      RJMP	0x0249
    01FB 3B6E      CPI	R22,0xBE
    01FC E0E0      LDI	R30,0
    01FD 077E      CPC	R23,R30
    01FE F409      BNE	0x0200
    01FF C047      RJMP	0x0247
    0200 EB8E      LDI	R24,0xBE
    0201 E090      LDI	R25,0
    0202 1786      CP	R24,R22
    0203 0797      CPC	R25,R23
    0204 F094      BLT	0x0217
    0205 3767      CPI	R22,0x77
    0206 E0E0      LDI	R30,0
    0207 077E      CPC	R23,R30
    0208 F409      BNE	0x020A
    0209 C03B      RJMP	0x0245
    020A 376B      CPI	R22,0x7B
    020B E0E0      LDI	R30,0
    020C 077E      CPC	R23,R30
    020D F1A9      BEQ	0x0243
    020E 376D      CPI	R22,0x7D
    020F E0E0      LDI	R30,0
    0210 077E      CPC	R23,R30
    0211 F179      BEQ	0x0241
    0212 376E      CPI	R22,0x7E
    0213 E0E0      LDI	R30,0
    0214 077E      CPC	R23,R30
    0215 F149      BEQ	0x023F
    0216 C048      RJMP	0x025F
    0217 3D67      CPI	R22,0xD7
    0218 E0E0      LDI	R30,0
    0219 077E      CPC	R23,R30
    021A F409      BNE	0x021C
    021B C039      RJMP	0x0255
    021C 3D6B      CPI	R22,0xDB
    021D E0E0      LDI	R30,0
    021E 077E      CPC	R23,R30
    021F F409      BNE	0x0221
    0220 C032      RJMP	0x0253
    0221 3D6D      CPI	R22,0xDD
    0222 E0E0      LDI	R30,0
    0223 077E      CPC	R23,R30
    0224 F161      BEQ	0x0251
    0225 3D6E      CPI	R22,0xDE
    0226 E0E0      LDI	R30,0
    0227 077E      CPC	R23,R30
    0228 F131      BEQ	0x024F
    0229 3D67      CPI	R22,0xD7
    022A E0E0      LDI	R30,0
    022B 077E      CPC	R23,R30
    022C F40C      BGE	0x022E
    022D C031      RJMP	0x025F
    022E 3E67      CPI	R22,0xE7
    022F E0E0      LDI	R30,0
    0230 077E      CPC	R23,R30

⌨️ 快捷键说明

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