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

📄 sle4442.lst

📁 基于AVR单片机实现了食堂IC卡售饭机系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
    044A 077E      CPC	R23,R30
    044B F409      BNE	0x044D
    044C C048      RJMP	0x0495
    044D 3164      CPI	R22,0x14
    044E E0E0      LDI	R30,0
    044F 077E      CPC	R23,R30
    0450 F409      BNE	0x0452
    0451 C052      RJMP	0x04A4
    0452 3168      CPI	R22,0x18
    0453 E0E0      LDI	R30,0
    0454 077E      CPC	R23,R30
    0455 F409      BNE	0x0457
    0456 C05C      RJMP	0x04B3
    0457 C089      RJMP	0x04E1
    0458 3461      CPI	R22,0x41
    0459 E0E0      LDI	R30,0
    045A 077E      CPC	R23,R30
    045B F409      BNE	0x045D
    045C C033      RJMP	0x0490
    045D 3462      CPI	R22,0x42
    045E E0E0      LDI	R30,0
    045F 077E      CPC	R23,R30
    0460 F409      BNE	0x0462
    0461 C03D      RJMP	0x049F
    0462 3464      CPI	R22,0x44
    0463 E0E0      LDI	R30,0
    0464 077E      CPC	R23,R30
    0465 F409      BNE	0x0467
    0466 C047      RJMP	0x04AE
    0467 3468      CPI	R22,0x48
    0468 E0E0      LDI	R30,0
    0469 077E      CPC	R23,R30
    046A F409      BNE	0x046C
    046B C062      RJMP	0x04CE
    046C 3461      CPI	R22,0x41
    046D E0E0      LDI	R30,0
    046E 077E      CPC	R23,R30
    046F F40C      BGE	0x0471
    0470 C070      RJMP	0x04E1
    0471 3861      CPI	R22,0x81
    0472 E0E0      LDI	R30,0
    0473 077E      CPC	R23,R30
    0474 F409      BNE	0x0476
    0475 C05E      RJMP	0x04D4
    0476 3862      CPI	R22,0x82
    0477 E0E0      LDI	R30,0
    0478 077E      CPC	R23,R30
    0479 F409      BNE	0x047B
    047A C041      RJMP	0x04BC
    047B 3864      CPI	R22,0x84
    047C E0E0      LDI	R30,0
    047D 077E      CPC	R23,R30
    047E F409      BNE	0x0480
    047F C045      RJMP	0x04C5
    0480 3868      CPI	R22,0x88
    0481 E0E0      LDI	R30,0
    0482 077E      CPC	R23,R30
    0483 F409      BNE	0x0485
    0484 C055      RJMP	0x04DA
    0485 C05B      RJMP	0x04E1
(0456)   {case 0x11:value=9;Num_Flag=1;break;
    0486 E069      LDI	R22,0x9
    0487 E081      LDI	R24,1
    0488 9380007F  STS	_Num_Flag,R24
    048A C057      RJMP	0x04E2
(0457)    case 0x21:value=8;Num_Flag=1;break;
    048B E068      LDI	R22,0x8
    048C E081      LDI	R24,1
    048D 9380007F  STS	_Num_Flag,R24
    048F C052      RJMP	0x04E2
(0458)    case 0x41:value=7;Num_Flag=1;break;
    0490 E067      LDI	R22,7
    0491 E081      LDI	R24,1
    0492 9380007F  STS	_Num_Flag,R24
    0494 C04D      RJMP	0x04E2
(0459)    case 0x12:value=6;Num_Flag=1;break;
    0495 E066      LDI	R22,6
    0496 E081      LDI	R24,1
    0497 9380007F  STS	_Num_Flag,R24
    0499 C048      RJMP	0x04E2
(0460)    case 0x22:value=5;Num_Flag=1;break;
    049A E065      LDI	R22,5
    049B E081      LDI	R24,1
    049C 9380007F  STS	_Num_Flag,R24
    049E C043      RJMP	0x04E2
(0461)    case 0x42:value=4;Num_Flag=1;break;
    049F E064      LDI	R22,4
    04A0 E081      LDI	R24,1
    04A1 9380007F  STS	_Num_Flag,R24
    04A3 C03E      RJMP	0x04E2
(0462)    case 0x14:value=3;Num_Flag=1;break;
    04A4 E063      LDI	R22,3
    04A5 E081      LDI	R24,1
    04A6 9380007F  STS	_Num_Flag,R24
    04A8 C039      RJMP	0x04E2
(0463)    case 0x24:value=2;Num_Flag=1;break;
    04A9 E062      LDI	R22,2
    04AA E081      LDI	R24,1
    04AB 9380007F  STS	_Num_Flag,R24
    04AD C034      RJMP	0x04E2
(0464)    case 0x44:value=1;Num_Flag=1;break;
    04AE E061      LDI	R22,1
    04AF E081      LDI	R24,1
    04B0 9380007F  STS	_Num_Flag,R24
    04B2 C02F      RJMP	0x04E2
(0465)    case 0x18:value=0;Num_Flag=1;break;
    04B3 2766      CLR	R22
    04B4 E081      LDI	R24,1
    04B5 9380007F  STS	_Num_Flag,R24
    04B7 C02A      RJMP	0x04E2
(0466)    case 0x28:Point_Flag=1;break;
    04B8 E081      LDI	R24,1
    04B9 93800079  STS	_Point_Flag,R24
    04BB C026      RJMP	0x04E2
(0467)    case 0x82:Add_Flag=1;Sub_Flag=0;Key_Flag=1;break;
    04BC E081      LDI	R24,1
    04BD 9380007E  STS	_Add_Flag,R24
    04BF 2422      CLR	R2
    04C0 9220007D  STS	_Sub_Flag,R2
    04C2 93800078  STS	_Key_Flag,R24
    04C4 C01D      RJMP	0x04E2
(0468)    case 0x84:Sub_Flag=1;Add_Flag=0;Key_Flag=1;break;
    04C5 E081      LDI	R24,1
    04C6 9380007D  STS	_Sub_Flag,R24
    04C8 2422      CLR	R2
    04C9 9220007E  STS	_Add_Flag,R2
    04CB 93800078  STS	_Key_Flag,R24
    04CD C014      RJMP	0x04E2
(0469)    case 0x48:Repair_Flag=1;Key_Flag=1;break;
    04CE E081      LDI	R24,1
    04CF 9380007B  STS	_Repair_Flag,R24
    04D1 93800078  STS	_Key_Flag,R24
    04D3 C00E      RJMP	0x04E2
(0470)    case 0x81:Init_Flag=1;Key_Flag=1;break;
    04D4 E081      LDI	R24,1
    04D5 9380007C  STS	_Init_Flag,R24
    04D7 93800078  STS	_Key_Flag,R24
    04D9 C008      RJMP	0x04E2
(0471)    case 0x88:Enter_Flag=1;Key_Flag=0;break;
    04DA E081      LDI	R24,1
    04DB 9380007A  STS	_Enter_Flag,R24
    04DD 2422      CLR	R2
    04DE 92200078  STS	_Key_Flag,R2
    04E0 C001      RJMP	0x04E2
(0472)    default:     NOP();
    04E1 0000      NOP
(0473)   }
(0474)  if(Num_Flag==1){p[4]=p[3];p[3]=p[2];p[2]=p[1];p[1]=value;Num_Flag=0;}
    04E2 9180007F  LDS	R24,_Num_Flag
    04E4 3081      CPI	R24,1
    04E5 F4C1      BNE	0x04FE
    04E6 2FE4      MOV	R30,R20
    04E7 2FF5      MOV	R31,R21
    04E8 8023      LDD	R2,Z+3
    04E9 2FE4      MOV	R30,R20
    04EA 2FF5      MOV	R31,R21
    04EB 8224      STD	Z+4,R2
    04EC 2FE4      MOV	R30,R20
    04ED 2FF5      MOV	R31,R21
    04EE 8022      LDD	R2,Z+2
    04EF 2FE4      MOV	R30,R20
    04F0 2FF5      MOV	R31,R21
    04F1 8223      STD	Z+3,R2
    04F2 2FE4      MOV	R30,R20
    04F3 2FF5      MOV	R31,R21
    04F4 8021      LDD	R2,Z+1
    04F5 2FE4      MOV	R30,R20
    04F6 2FF5      MOV	R31,R21
    04F7 8222      STD	Z+2,R2
    04F8 2FE4      MOV	R30,R20
    04F9 2FF5      MOV	R31,R21
    04FA 8361      STD	Z+1,R22
    04FB 2422      CLR	R2
    04FC 9220007F  STS	_Num_Flag,R2
(0475)  if(Point_Flag==1){p[0]=value;Point_Flag=0;}
    04FE 91800079  LDS	R24,_Point_Flag
    0500 3081      CPI	R24,1
    0501 F431      BNE	0x0508
    0502 2FE4      MOV	R30,R20
    0503 2FF5      MOV	R31,R21
    0504 8360      STD	Z+0,R22
    0505 2422      CLR	R2
    0506 92200079  STS	_Point_Flag,R2
(0476)  if(Add_Flag==1) {Add_Flag=1;Sub_Flag=0;}
    0508 9180007E  LDS	R24,_Add_Flag
    050A 3081      CPI	R24,1
    050B F431      BNE	0x0512
    050C E081      LDI	R24,1
    050D 9380007E  STS	_Add_Flag,R24
    050F 2422      CLR	R2
    0510 9220007D  STS	_Sub_Flag,R2
(0477)  if(Sub_Flag==1) {Sub_Flag=1;Add_Flag=0;}
    0512 9180007D  LDS	R24,_Sub_Flag
    0514 3081      CPI	R24,1
    0515 F431      BNE	0x051C
    0516 E081      LDI	R24,1
    0517 9380007D  STS	_Sub_Flag,R24
    0519 2422      CLR	R2
    051A 9220007E  STS	_Add_Flag,R2
(0478)  if(Init_Flag==1) {Init_Flag=1;}
    051C 9180007C  LDS	R24,_Init_Flag
    051E 3081      CPI	R24,1
    051F F419      BNE	0x0523
    0520 E081      LDI	R24,1
    0521 9380007C  STS	_Init_Flag,R24
(0479)  if(Repair_Flag==1) {Repair_Card();Repair_Flag=0;}
    0523 9180007B  LDS	R24,_Repair_Flag
    0525 3081      CPI	R24,1
    0526 F421      BNE	0x052B
    0527 DDA2      RCALL	_Repair_Card
    0528 2422      CLR	R2
    0529 9220007B  STS	_Repair_Flag,R2
(0480)  if(Enter_Flag==1)
    052B 9180007A  LDS	R24,_Enter_Flag
    052D 3081      CPI	R24,1
    052E F511      BNE	0x0551
(0481)    {if(Add_Flag==1) {Add_Card(p);Enter_Flag=0;Add_Flag=0;}
    052F 9180007E  LDS	R24,_Add_Flag
    0531 3081      CPI	R24,1
    0532 F441      BNE	0x053B
    0533 2F04      MOV	R16,R20
    0534 2F15      MOV	R17,R21
    0535 DDA8      RCALL	_Add_Card
    0536 2422      CLR	R2
    0537 9220007A  STS	_Enter_Flag,R2
    0539 9220007E  STS	_Add_Flag,R2
(0482)     if(Sub_Flag==1) {Sub_Card(p);Enter_Flag=0;Sub_Flag=0;}
    053B 9180007D  LDS	R24,_Sub_Flag
    053D 3081      CPI	R24,1
    053E F441      BNE	0x0547
    053F 2F04      MOV	R16,R20
    0540 2F15      MOV	R17,R21
    0541 DDF5      RCALL	_Sub_Card
    0542 2422      CLR	R2
    0543 9220007A  STS	_Enter_Flag,R2
    0545 9220007D  STS	_Sub_Flag,R2
(0483) 	if(Init_Flag==1) {Initial_Card(p);Init_Flag=0;}}
    0547 9180007C  LDS	R24,_Init_Flag
    0549 3081      CPI	R24,1
    054A F431      BNE	0x0551
    054B 2F04      MOV	R16,R20
    054C 2F15      MOV	R17,R21
    054D DD1D      RCALL	_Initial_Card
    054E 2422      CLR	R2
    054F 9220007C  STS	_Init_Flag,R2
(0484) }
    0551 D0A7      RCALL	pop_gset2
    0552 9508      RET
_TIMER1_INT:
  temp                 --> Y+0
  i                    --> R20
    0553 D0CB      RCALL	push_lset
    0554 D0AA      RCALL	push_gset1
    0555 9725      SBIW	R28,5
(0485)   	
(0486) //***************中断处理********************//
(0487) //**********定时器2:16ms中断显示一次*******//
(0488) #pragma interrupt_handler TIMER1_INT:9 
(0489) void TIMER1_INT(void)
(0490) {uchar temp[5],i;
(0491)  for(i=0;i<5;i++)
    0556 2744      CLR	R20
    0557 C00F      RJMP	0x0567
(0492)    temp[i]=ICcontent[9+i];
    0558 E88F      LDI	R24,0x8F
    0559 E090      LDI	R25,0
    055A 2FE4      MOV	R30,R20
    055B 27FF      CLR	R31
    055C 0FE8      ADD	R30,R24
    055D 1FF9      ADC	R31,R25
    055E 8020      LDD	R2,Z+0
    055F 2F8C      MOV	R24,R28
    0560 2F9D      MOV	R25,R29
    0561 2FE4      MOV	R30,R20
    0562 27FF      CLR	R31
    0563 0FE8      ADD	R30,R24
    0564 1FF9      ADC	R31,R25
    0565 8220      STD	Z+0,R2
    0566 9543      INC	R20
    0567 3045      CPI	R20,5
    0568 F378      BCS	0x0558
(0493)  if(IC_Flag==0) Display(EEEEE);
    0569 90200080  LDS	R2,_IC_Flag
    056B 2022      TST	R2
    056C F419      BNE	0x0570
    056D E60E      LDI	R16,0x6E
    056E E010      LDI	R17,0
    056F DE73      RCALL	_Display
(0494)  if(IC_Flag==1) Display(FFFFF);
    0570 91800080  LDS	R24,_IC_Flag
    0572 3081      CPI	R24,1
    0573 F419      BNE	0x0577
    0574 E703      LDI	R16,0x73
    0575 E010      LDI	R17,0
    0576 DE6C      RCALL	_Display
(0495)  if(IC_Flag==3) 
    0577 91800080  LDS	R24,_IC_Flag
    0579 3083      CPI	R24,3
    057A F499      BNE	0x058E
(0496)    {if(Key_Flag==1)//显示此次操作金额; 
    057B 91800078  LDS	R24,_Key_Flag
    057D 3081      CPI	R24,1
    057E F449      BNE	0x0588
(0497)       {Money[1]|=0x80;//显示时加上小数点;
    057F 91800082  LDS	R24,_Money+1
    0581 6880      ORI	R24,0x80
    0582 93800082  STS	_Money+1,R24
(0498) 	   Display(Money);}
    0584 E801      LDI	R16,0x81
    0585 E010      LDI	R17,0
    0586 DE5C      RCALL	_Display
    0587 C006      RJMP	0x058E
(0499) 	else          //显示卡内余额;
(0500) 	  {temp[4]|=0x80;
    0588 818C      LDD	R24,Y+4
    0589 6880      ORI	R24,0x80
    058A 838C      STD	Y+4,R24
(0501) 	   Display(temp);}
    058B 2F0C      MOV	R16,R28
    058C 2F1D      MOV	R17,R29
    058D DE55      RCALL	_Display
(0502)    }
(0503) }
    058E 9625      ADIW	R28,5
    058F D072      RCALL	pop_gset1
    0590 D0A5      RCALL	pop_lset
    0591 9518      RETI
(0504) 
(0505) //*************系统初始化*************//
(0506) void Initial_System(void)
(0507) {//系统初始化
(0508)  //SPL=0x5f;//AT90S8535的堆栈指针指向最高RAM地址;
(0509)  //SPH=0x02;
(0510)  //IO口初始化;
(0511)  DDRA=0xff; //A口输出高电平
_Initial_System:
    0592 EF8F      LDI	R24,0xFF
    0593 BB8A      OUT	0x1A,R24
(0512)  PORTA=0xff;
    0594 BB8B      OUT	0x1B,R24
(0513)  DDRB=0xff; //B口输出低电平
    0595 BB87      OUT	0x17,R24
(0514)  PORTB=0x00;
    0596 2422      CLR	R2
    0597 BA28      OUT	0x18,R2
(0515)  DDRC=0x0f; //C口高四位输入(不带上拉电阻)低四位输出0
    0598 E08F      LDI	R24,0xF
    0599 BB84      OUT	0x14,R24
(0516)  PORTC=0xf0;
    059A EF80      LDI	R24,0xF0
    059B BB85      OUT	0x15,R24
(0517)  DDRD=0xff; //D口输出低电平
    059C EF8F      LDI	R24,0xFF
    059D BB81      OUT	0x11,R24
(0518)  PORTD=0x00;
    059E BA22      OUT	0x12,R2
(0519)  //中断系统初始化(定时器1中断)
(0520)  SREG=SREG|0x80; //I(SREG^7)全局中断使能置位
    059F 9478      BSET	7
(0521)  TIMSK=TIMSK|0x40;//TOIE1(TIMSK^2)T/C1溢出中断使能置位
    05A0 B789      IN	R24,0x39
    05A1 6480      ORI	R24,0x40
    05A2 BF89      OUT	0x39,R24
(0522)  TIFR=TIFR|0x40;//TOV1(TIFR^2)T/C1溢出中断标志位写"1"清0
    05A3 B788      IN	R24,0x38
    05A4 6480      ORI	R24,0x40
    05A5 BF88      OUT	0x38,R24
(0523)  //定时器初始化
(0524)  TCCR1B=TCCR1B|0x20;//定时器时钟分频=CLK/8 (1uS计数)
    05A6 B58E      IN	R24,0x2E
    05A7 6280      ORI	R24,0x20
    05A8 BD8E      OUT	0x2E,R24
(0525)  TCNT1H=0xc1;//需要计数16000=0x3E80次,
    05A9 EC81      LDI	R24,0xC1
    05AA BD8D      OUT	0x2D,R24
(0526)  TCNT1L=0x7f;//计数初值0xff-0x3e80=0xc17f;
    05AB E78F      LDI	R24,0x7F
    05AC BD8C      OUT	0x2C,R24
(0527)  //显示系统初始化
(0528)  IC_Flag=0;//如果IC卡没有上电,则显示的是8.8.8.8.,否则显示IC卡的内容
    05AD 92200080  STS	_IC_Flag,R2
(0529) }
    05AF 9508      RET
(0530) 		  
(0531) void main(void)
(0532) {uchar i,j;
(0533)  Initial_System();
_main:
  j                    --> Y+1
  i                    --> R20
    05B0 DFE1      RCALL	_Initial_System
    05B1 C041      RJMP	0x05F3
(0534)  while(IC_Flag==1)
(0535)    {DelayMs(5);
    05B2 E005      LDI	R16,5
    05B3 E010      LDI	R17,0
    05B4 DAB5      RCALL	_DelayMs
(0536)     ResetIC(ICcode);
    05B5 E904      LDI	R16,0x94
    05B6 E010      LDI	R17,0
    05B7 DB06      RCALL	_ResetIC
(0537) 	i=Read_Card(ICcontent);
    05B8 E806      LDI	R16,0x86
    05B9 E010      LDI	R17,0
    05BA DC6C      RCALL	_Read_Card
    05BB 2F40      MOV	R20,R16
(0538) 	if(i==0) {IC_Flag=0; Buzzle_Password();}   

⌨️ 快捷键说明

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