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

📄 test.lst

📁 ICC编译绝对可用M16的HD7279驱动测试程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0246)    return 0;
    021A 2700      CLR	R16
    021B 2711      CLR	R17
    021C 9508      RET
_write7279:
  dta                  --> R20
  cmd                  --> R22
    021D 940E02B6  CALL	push_gset2
    021F 2F42      MOV	R20,R18
    0220 2F60      MOV	R22,R16
(0247) } 
(0248) 
(0249) void write7279(unsigned char cmd, unsigned char dta) 
(0250) { 
(0251)    send_byte (cmd); 
    0221 2F06      MOV	R16,R22
    0222 D00E      RCALL	_send_byte
(0252)    send_byte (dta); 
    0223 2F04      MOV	R16,R20
    0224 D00C      RCALL	_send_byte
(0253) } 
    0225 940E029C  CALL	pop_gset2
    0227 9508      RET
_read7279:
  command              --> R20
    0228 940E029F  CALL	push_gset1
    022A 2F40      MOV	R20,R16
(0254) 
(0255) unsigned char read7279(unsigned char command) 
(0256) { 
(0257)    send_byte(command); 
    022B 2F04      MOV	R16,R20
    022C D004      RCALL	_send_byte
(0258)    return(receive_byte()); 
    022D D01D      RCALL	_receive_byte
    022E 940E02A2  CALL	pop_gset1
    0230 9508      RET
_send_byte:
  i                    --> R20
  out_byte             --> R22
    0231 940E02B6  CALL	push_gset2
    0233 2F60      MOV	R22,R16
(0259) } 
(0260) 
(0261) void send_byte(   unsigned char out_byte) 
(0262) { 
(0263)    unsigned char i; 
(0264)    HD7279_CS_L;
    0234 98C2      CBI	0x18,2
(0265)    long_delay(); 
    0235 D02F      RCALL	_long_delay
(0266)    for (i=0;i<8;i++) 
    0236 2744      CLR	R20
    0237 C00D      RJMP	0x0245
(0267)    { 
(0268)       if (out_byte&0x80) 
    0238 FF67      SBRS	R22,7
    0239 C002      RJMP	0x023C
(0269)       { 
(0270)          HD7279_DATA_H; 
    023A 9AC0      SBI	0x18,0
(0271)       } 
    023B C001      RJMP	0x023D
(0272)       else 
(0273)       { 
(0274)          HD7279_DATA_L; 
    023C 98C0      CBI	0x18,0
(0275)       } 
(0276)       HD7279_CLK_H; 
    023D 9AC1      SBI	0x18,1
(0277)       short_delay(); 
    023E D02C      RCALL	_short_delay
(0278)       HD7279_CLK_L; 
    023F 98C1      CBI	0x18,1
(0279)       short_delay(); 
    0240 D02A      RCALL	_short_delay
(0280)       out_byte=out_byte*2; 
    0241 E082      LDI	R24,2
    0242 9F86      MUL	R24,R22
    0243 2D60      MOV	R22,R0
    0244 9543      INC	R20
    0245 3048      CPI	R20,0x8
    0246 F388      BCS	0x0238
(0281)    } 
(0282)    HD7279_DATA_L; 
    0247 98C0      CBI	0x18,0
(0283) } 
    0248 940E029C  CALL	pop_gset2
    024A 9508      RET
_receive_byte:
  i                    --> R20
  in_byte              --> R22
    024B 940E02B6  CALL	push_gset2
(0284) 
(0285) 
(0286) unsigned char receive_byte(void)  
(0287) {  
(0288)    unsigned char i, in_byte; 
(0289)    HD7279_DDR_L;
    024D 98B8      CBI	0x17,0
(0290)    HD7279_DATA_H;   
    024E 9AC0      SBI	0x18,0
(0291)    long_delay();  
    024F D015      RCALL	_long_delay
(0292)    for (i=0;i<8;i++)  
    0250 2744      CLR	R20
    0251 C00B      RJMP	0x025D
(0293)    {  
(0294)       HD7279_CLK_H;  
    0252 9AC1      SBI	0x18,1
(0295)       short_delay();  
    0253 D017      RCALL	_short_delay
(0296)       in_byte=in_byte*2;  
    0254 E082      LDI	R24,2
    0255 9F86      MUL	R24,R22
    0256 2D60      MOV	R22,R0
(0297) 
(0298)       if (HD7279_DATA&1==1)  
    0257 9BB0      SBIS	0x16,0
    0258 C001      RJMP	0x025A
(0299)       {  
(0300)          in_byte=in_byte|0x01;  
    0259 6061      ORI	R22,1
(0301)       }  
(0302)       HD7279_CLK_L; 
    025A 98C1      CBI	0x18,1
(0303)       short_delay();  
    025B D00F      RCALL	_short_delay
    025C 9543      INC	R20
    025D 3048      CPI	R20,0x8
    025E F398      BCS	0x0252
(0304)    }  
(0305)    HD7279_DATA_L;
    025F 98C0      CBI	0x18,0
(0306)    HD7279_DDR_H;
    0260 9AB8      SBI	0x17,0
(0307)    return (in_byte);  
    0261 2F06      MOV	R16,R22
    0262 940E029C  CALL	pop_gset2
    0264 9508      RET
(0308) }  
(0309) 
(0310) 
(0311) 
(0312) void long_delay(void) 
(0313) { 
(0314)    unsigned char i; 
(0315)    for (i=0;i<0x30;i++); 
_long_delay:
  i                    --> R16
    0265 2700      CLR	R16
    0266 C001      RJMP	0x0268
    0267 9503      INC	R16
    0268 3300      CPI	R16,0x30
    0269 F3E8      BCS	0x0267
(0316) } 
    026A 9508      RET
(0317) 
(0318) void short_delay(void) 
(0319) { 
(0320)    unsigned char i; 
(0321)    for (i=0;i<8;i++); 
_short_delay:
  i                    --> R16
    026B 2700      CLR	R16
    026C C001      RJMP	0x026E
    026D 9503      INC	R16
    026E 3008      CPI	R16,0x8
    026F F3E8      BCS	0x026D
(0322) } 
    0270 9508      RET
_int0_isr:
  dd                   --> R20
    0271 940E02BA  CALL	push_lset
    0273 940E029F  CALL	push_gset1
(0323) #pragma interrupt_handler int0_isr:2
(0324) void int0_isr(void)
(0325) {unsigned char dd;
(0326)  dd=receive_byte();
    0275 DFD5      RCALL	_receive_byte
    0276 2F40      MOV	R20,R16
(0327)   write7279(DECODE1+1,dd/16);      // 在第2位显示键码高8位 
    0277 2F24      MOV	R18,R20
    0278 9522      SWAP	R18
    0279 702F      ANDI	R18,0xF
    027A EC09      LDI	R16,0xC9
    027B DFA1      RCALL	_write7279
(0328)   write7279(DECODE1,dd&0x0f);      // 在第1位显示键码低8位 
    027C 2F24      MOV	R18,R20
    027D 702F      ANDI	R18,0xF
    027E EC08      LDI	R16,0xC8
    027F DF9D      RCALL	_write7279
(0329) }
    0280 940E02A2  CALL	pop_gset1
    0282 940E02D1  CALL	pop_lset
    0284 9518      RETI
(0330) // ************************* 延时 n*ms ************************* 
(0331) 
(0332) void delay_us(int time)    //微秒级延时 
(0333)  { 
(0334)  do 
(0335)  time--; 
_delay_us:
  time                 --> R16
    0285 5001      SUBI	R16,1
    0286 4010      SBCI	R17,0
(0336)  while(time>1); 
    0287 E081      LDI	R24,1
    0288 E090      LDI	R25,0
    0289 1780      CP	R24,R16
    028A 0791      CPC	R25,R17
    028B F3CC      BLT	0x0285
(0337)  } 
    028C 9508      RET
_dely_ms:
  time                 --> R20
    028D 940E029F  CALL	push_gset1
    028F 01A8      MOVW	R20,R16
(0338) 
(0339) void dely_ms(unsigned int time) 
(0340)  { 
    0290 C005      RJMP	0x0296
(0341)  while(time!=0) 
(0342)   { 
(0343)   delay_us(1000); 
    0291 EE08      LDI	R16,0xE8
    0292 E013      LDI	R17,3
    0293 DFF1      RCALL	_delay_us
(0344)   time--; 
    0294 5041      SUBI	R20,1
    0295 4050      SBCI	R21,0
    0296 3040      CPI	R20,0
    0297 0745      CPC	R20,R21
    0298 F7C1      BNE	0x0291
(0345)   } 
(0346)  }  
FILE: <library>
    0299 940E02A2  CALL	pop_gset1
    029B 9508      RET
pop_gset2:
    029C E0E2      LDI	R30,2
    029D 940C02A3  JMP	pop
push_gset1:
    029F 935A      ST	R21,-Y
    02A0 934A      ST	R20,-Y
    02A1 9508      RET
pop_gset1:
    02A2 E0E1      LDI	R30,1
pop:
    02A3 9149      LD	R20,Y+
    02A4 9159      LD	R21,Y+
    02A5 FDE0      SBRC	R30,0
    02A6 9508      RET
    02A7 9169      LD	R22,Y+
    02A8 9179      LD	R23,Y+
    02A9 FDE1      SBRC	R30,1
    02AA 9508      RET
    02AB 90A9      LD	R10,Y+
    02AC 90B9      LD	R11,Y+
    02AD FDE2      SBRC	R30,2
    02AE 9508      RET
    02AF 90C9      LD	R12,Y+
    02B0 90D9      LD	R13,Y+
    02B1 FDE3      SBRC	R30,3
    02B2 9508      RET
    02B3 90E9      LD	R14,Y+
    02B4 90F9      LD	R15,Y+
    02B5 9508      RET
push_gset2:
    02B6 937A      ST	R23,-Y
    02B7 936A      ST	R22,-Y
    02B8 940C029F  JMP	push_gset1
push_lset:
    02BA 93FA      ST	R31,-Y
    02BB 93EA      ST	R30,-Y
    02BC 93BA      ST	R27,-Y
    02BD 93AA      ST	R26,-Y
    02BE 939A      ST	R25,-Y
    02BF 938A      ST	R24,-Y
    02C0 933A      ST	R19,-Y
    02C1 932A      ST	R18,-Y
    02C2 931A      ST	R17,-Y
    02C3 930A      ST	R16,-Y
    02C4 929A      ST	R9,-Y
    02C5 928A      ST	R8,-Y
    02C6 927A      ST	R7,-Y
    02C7 926A      ST	R6,-Y
    02C8 925A      ST	R5,-Y
    02C9 924A      ST	R4,-Y
    02CA 923A      ST	R3,-Y
    02CB 922A      ST	R2,-Y
    02CC 921A      ST	R1,-Y
    02CD 920A      ST	R0,-Y
    02CE B60F      IN	R0,0x3F
    02CF 920A      ST	R0,-Y
    02D0 9508      RET
pop_lset:
    02D1 9009      LD	R0,Y+
    02D2 BE0F      OUT	0x3F,R0
    02D3 9009      LD	R0,Y+
    02D4 9019      LD	R1,Y+
    02D5 9029      LD	R2,Y+
    02D6 9039      LD	R3,Y+
    02D7 9049      LD	R4,Y+
    02D8 9059      LD	R5,Y+
    02D9 9069      LD	R6,Y+
    02DA 9079      LD	R7,Y+
    02DB 9089      LD	R8,Y+
    02DC 9099      LD	R9,Y+
    02DD 9109      LD	R16,Y+
    02DE 9119      LD	R17,Y+
    02DF 9129      LD	R18,Y+
    02E0 9139      LD	R19,Y+
    02E1 9189      LD	R24,Y+
    02E2 9199      LD	R25,Y+
    02E3 91A9      LD	R26,Y+
    02E4 91B9      LD	R27,Y+
    02E5 91E9      LD	R30,Y+
    02E6 91F9      LD	R31,Y+
    02E7 9508      RET

⌨️ 快捷键说明

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