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

📄 ac15-1.lst

📁 AVR学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0118 BB84      OUT	0x14,R24
(0134)  PORTD = 0xFF;
    0119 EF8F      LDI	R24,0xFF
    011A BB82      OUT	0x12,R24
(0135)  DDRD  = 0x00;
    011B BA21      OUT	0x11,R2
    011C 9508      RET
(0136) }
(0137) /*************************************/
(0138) char com_data;	
(0139) uchar cnt;		
(0140) void delay_iic(int n);	
(0141) uchar rd_24c01(char a);	
(0142) void wr_24c01(char a,char b);
(0143) /******************扫描按键***************/
(0144) uchar scan_key(void)		
(0145) {					
(0146) uchar temp;			
(0147) temp=PIND;				
_scan_key:
  temp                 --> R16
    011D B300      IN	R16,0x10
(0148) return temp;			
    011E 9508      RET
_delay:
  i                    --> R20
  j                    --> R22
  k                    --> R16
    011F 940E034B  CALL	push_gset2
(0149) }					
(0150) /***************延时子函数******************/
(0151) void delay(uint k)		
(0152) {					
(0153) uint i,j;			
(0154) for(i=0;i<k;i++)			
    0121 2744      CLR	R20
    0122 2755      CLR	R21
    0123 C00B      RJMP	0x012F
(0155) {for(j=0;j<121;j++)		
    0124 2766      CLR	R22
    0125 2777      CLR	R23
    0126 C002      RJMP	0x0129
    0127 5F6F      SUBI	R22,0xFF
    0128 4F7F      SBCI	R23,0xFF
    0129 3769      CPI	R22,0x79
    012A E0E0      LDI	R30,0
    012B 077E      CPC	R23,R30
    012C F3D0      BCS	0x0127
    012D 5F4F      SUBI	R20,0xFF
    012E 4F5F      SBCI	R21,0xFF
    012F 1740      CP	R20,R16
    0130 0751      CPC	R21,R17
    0131 F390      BCS	0x0124
    0132 940E033C  CALL	pop_gset2
    0134 9508      RET
(0156) {;}}				
(0157) }					
(0158) /*****************启动读写时序子函数******************/
(0159) void start(void)			
(0160) {DDRC=0x03;					
_start:
    0135 E083      LDI	R24,3
    0136 BB84      OUT	0x14,R24
(0161) SDA_1;Some_NOP();
    0137 9AA9      SBI	0x15,1
    0138 0000      NOP
    0139 0000      NOP
    013A 0000      NOP
    013B 0000      NOP
    013C 0000      NOP
    013D 0000      NOP
    013E 0000      NOP
    013F 0000      NOP
(0162) SCL_1;Some_NOP();
    0140 9AA8      SBI	0x15,0
    0141 0000      NOP
    0142 0000      NOP
    0143 0000      NOP
    0144 0000      NOP
    0145 0000      NOP
    0146 0000      NOP
    0147 0000      NOP
    0148 0000      NOP
(0163) SDA_0;Some_NOP();
    0149 98A9      CBI	0x15,1
    014A 0000      NOP
    014B 0000      NOP
    014C 0000      NOP
    014D 0000      NOP
    014E 0000      NOP
    014F 0000      NOP
    0150 0000      NOP
    0151 0000      NOP
(0164) SCL_0;Some_NOP();
    0152 98A8      CBI	0x15,0
    0153 0000      NOP
    0154 0000      NOP
    0155 0000      NOP
    0156 0000      NOP
    0157 0000      NOP
    0158 0000      NOP
    0159 0000      NOP
    015A 0000      NOP
    015B 9508      RET
(0165) }					
(0166) //********************停止操作子函数*********************
(0167) void stop(void)			
(0168) {	DDRC=0x03;			
_stop:
    015C E083      LDI	R24,3
    015D BB84      OUT	0x14,R24
(0169) SDA_0;Some_NOP();
    015E 98A9      CBI	0x15,1
    015F 0000      NOP
    0160 0000      NOP
    0161 0000      NOP
    0162 0000      NOP
    0163 0000      NOP
    0164 0000      NOP
    0165 0000      NOP
    0166 0000      NOP
(0170) SCL_1;Some_NOP();
    0167 9AA8      SBI	0x15,0
    0168 0000      NOP
    0169 0000      NOP
    016A 0000      NOP
    016B 0000      NOP
    016C 0000      NOP
    016D 0000      NOP
    016E 0000      NOP
    016F 0000      NOP
(0171) SDA_1;Some_NOP();
    0170 9AA9      SBI	0x15,1
    0171 0000      NOP
    0172 0000      NOP
    0173 0000      NOP
    0174 0000      NOP
    0175 0000      NOP
    0176 0000      NOP
    0177 0000      NOP
    0178 0000      NOP
    0179 9508      RET
(0172) }				
(0173) //************应答子函数*************
(0174) void ack(void)			
(0175) {	DDRC=0x03;				
_ack:
    017A E083      LDI	R24,3
    017B BB84      OUT	0x14,R24
(0176) SCL_1;Some_NOP();
    017C 9AA8      SBI	0x15,0
    017D 0000      NOP
    017E 0000      NOP
    017F 0000      NOP
    0180 0000      NOP
    0181 0000      NOP
    0182 0000      NOP
    0183 0000      NOP
    0184 0000      NOP
(0177) SCL_0;Some_NOP();
    0185 98A8      CBI	0x15,0
    0186 0000      NOP
    0187 0000      NOP
    0188 0000      NOP
    0189 0000      NOP
    018A 0000      NOP
    018B 0000      NOP
    018C 0000      NOP
    018D 0000      NOP
    018E 9508      RET
_shift8:
  j                    --> R20
  i                    --> R22
  a                    --> R16
    018F 940E034B  CALL	push_gset2
(0178) }					
(0179) //*************写入8位子函数*************
(0180) void shift8(char a)		
(0181) {					
(0182) uchar i,j;			
(0183) DDRC=0x03;
    0191 E083      LDI	R24,3
    0192 BB84      OUT	0x14,R24
(0184) com_data=a;			
    0193 93000061  STS	com_data,R16
(0185) for(i=0;i<8;i++)	
    0195 2766      CLR	R22
    0196 C01F      RJMP	0x01B6
(0186) {	
(0187) j=com_data&0x80;
    0197 91400061  LDS	R20,com_data
    0199 7840      ANDI	R20,0x80
(0188) if(j==0)SDA_0;
    019A F411      BNE	0x019D
    019B 98A9      CBI	0x15,1
    019C C001      RJMP	0x019E
(0189) else SDA_1;
    019D 9AA9      SBI	0x15,1
(0190) 
(0191) SCL_1;Some_NOP();
    019E 9AA8      SBI	0x15,0
    019F 0000      NOP
    01A0 0000      NOP
    01A1 0000      NOP
    01A2 0000      NOP
    01A3 0000      NOP
    01A4 0000      NOP
    01A5 0000      NOP
    01A6 0000      NOP
(0192) SCL_0;Some_NOP();
    01A7 98A8      CBI	0x15,0
    01A8 0000      NOP
    01A9 0000      NOP
    01AA 0000      NOP
    01AB 0000      NOP
    01AC 0000      NOP
    01AD 0000      NOP
    01AE 0000      NOP
    01AF 0000      NOP
(0193) com_data=com_data<<1;		
    01B0 90200061  LDS	R2,com_data
    01B2 0C22      LSL	R2
    01B3 92200061  STS	com_data,R2
    01B5 9563      INC	R22
    01B6 3068      CPI	R22,0x8
    01B7 F2F8      BCS	0x0197
    01B8 940E033C  CALL	pop_gset2
    01BA 9508      RET
_rd_24c01:
  command              --> R20
  i                    --> R20
  a                    --> R22
    01BB 940E034B  CALL	push_gset2
    01BD 2F60      MOV	R22,R16
(0194) }					
(0195) }					
(0196) //**************读24C01A中a地址单元的数据************
(0197) uchar rd_24c01(char a)		
(0198) {					
(0199) uchar i,command;		
(0200) DDRC=0x03;
    01BE E083      LDI	R24,3
    01BF BB84      OUT	0x14,R24
(0201) SDA_1;Some_NOP();
    01C0 9AA9      SBI	0x15,1
    01C1 0000      NOP
    01C2 0000      NOP
    01C3 0000      NOP
    01C4 0000      NOP
    01C5 0000      NOP
    01C6 0000      NOP
    01C7 0000      NOP
    01C8 0000      NOP
(0202) SCL_0;Some_NOP();
    01C9 98A8      CBI	0x15,0
    01CA 0000      NOP
    01CB 0000      NOP
    01CC 0000      NOP
    01CD 0000      NOP
    01CE 0000      NOP
    01CF 0000      NOP
    01D0 0000      NOP
    01D1 0000      NOP
(0203) start();				
    01D2 DF62      RCALL	_start
(0204) command=160;			
    01D3 EA40      LDI	R20,0xA0
(0205) shift8(command);		
    01D4 2F04      MOV	R16,R20
    01D5 DFB9      RCALL	_shift8
(0206) ack();				
    01D6 DFA3      RCALL	_ack
(0207) shift8(a);			
    01D7 2F06      MOV	R16,R22
    01D8 DFB6      RCALL	_shift8
(0208) ack();				
    01D9 DFA0      RCALL	_ack
(0209) start();				
    01DA DF5A      RCALL	_start
(0210) command=161;			
    01DB EA41      LDI	R20,0xA1
(0211) shift8(command);		
    01DC 2F04      MOV	R16,R20
    01DD DFB1      RCALL	_shift8
(0212) ack();				
    01DE DF9B      RCALL	_ack
(0213) 
(0214) SDA_1;Some_NOP();	
    01DF 9AA9      SBI	0x15,1
    01E0 0000      NOP
    01E1 0000      NOP
    01E2 0000      NOP
    01E3 0000      NOP
    01E4 0000      NOP
    01E5 0000      NOP
    01E6 0000      NOP
    01E7 0000      NOP
(0215) for(i=0;i<8;i++)			
    01E8 2744      CLR	R20
    01E9 C026      RJMP	0x0210
(0216) {
(0217) DDRC=0x01;				
    01EA E081      LDI	R24,1
    01EB BB84      OUT	0x14,R24
(0218) com_data=com_data<<1;		
    01EC 90200061  LDS	R2,com_data
    01EE 0C22      LSL	R2
    01EF 92200061  STS	com_data,R2
(0219) SCL_1;Some_NOP();	
    01F1 9AA8      SBI	0x15,0
    01F2 0000      NOP
    01F3 0000      NOP
    01F4 0000      NOP
    01F5 0000      NOP
    01F6 0000      NOP
    01F7 0000      NOP
    01F8 0000      NOP
    01F9 0000      NOP
(0220) if(PIN_SDA==0)com_data&=0xfe;
    01FA 9999      SBIC	0x13,1
    01FB C005      RJMP	0x0201
    01FC 2D82      MOV	R24,R2
    01FD 7F8E      ANDI	R24,0xFE
    01FE 93800061  STS	com_data,R24
    0200 C005      RJMP	0x0206
(0221) else com_data|=0x01;
    0201 91800061  LDS	R24,com_data
    0203 6081      ORI	R24,1
    0204 93800061  STS	com_data,R24
(0222) SCL_0;Some_NOP();
    0206 98A8      CBI	0x15,0
    0207 0000      NOP
    0208 0000      NOP
    0209 0000      NOP
    020A 0000      NOP
    020B 0000      NOP
    020C 0000      NOP
    020D 0000      NOP
    020E 0000      NOP
    020F 9543      INC	R20
    0210 3048      CPI	R20,0x8
    0211 F2C0      BCS	0x01EA
(0223) }					
(0224) stop();				
    0212 DF49      RCALL	_stop
(0225) return(com_data);	
    0213 91000061  LDS	R16,com_data
    0215 940E033C  CALL	pop_gset2
    0217 9508      RET
_wr_24c01:
  command              --> R10
  b                    --> R20
  a                    --> R22
    0218 940E0349  CALL	push_gset3
    021A 2F42      MOV	R20,R18
    021B 2F60      MOV	R22,R16
(0226) }					
(0227) //********将RAM中b地址单元的数据写入24C01A中a地址单元中***********
(0228) void wr_24c01(char a,char b)	
(0229) {					
(0230) uchar command;		
(0231) DDRC=0x03;
    021C E083      LDI	R24,3
    021D BB84      OUT	0x14,R24
(0232) SDA_1;Some_NOP();
    021E 9AA9      SBI	0x15,1
    021F 0000      NOP
    0220 0000      NOP
    0221 0000      NOP
    0222 0000      NOP
    0223 0000      NOP
    0224 0000      NOP
    0225 0000      NOP
    0226 0000      NOP
(0233) SCL_0;Some_NOP();
    0227 98A8      CBI	0x15,0
    0228 0000      NOP
    0229 0000      NOP
    022A 0000      NOP
    022B 0000      NOP
    022C 0000      NOP

⌨️ 快捷键说明

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