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

📄 displa.lst

📁 工控计数器ICCAVR的MAGE8程序LED数码显示+4键
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    0086 EFCF      LDI	R28,0xFF
    0087 E0D4      LDI	R29,4
    0088 BFCD      OUT	0x3D,R28
    0089 BFDE      OUT	0x3E,R29
    008A 51C0      SUBI	R28,0x10
    008B 40D0      SBCI	R29,0
    008C EA0A      LDI	R16,0xAA
    008D 8308      STD	Y+0,R16
    008E 2400      CLR	R0
    008F EDE7      LDI	R30,0xD7
    0090 E0F1      LDI	R31,1
    0091 E012      LDI	R17,2
    0092 30E1      CPI	R30,1
    0093 07F1      CPC	R31,R17
    0094 F011      BEQ	0x0097
    0095 9201      ST	R0,Z+
    0096 CFFB      RJMP	0x0092
    0097 8300      STD	Z+0,R16
    0098 E3E4      LDI	R30,0x34
    0099 E0F0      LDI	R31,0
    009A E0A0      LDI	R26,0
    009B E0B1      LDI	R27,1
    009C E011      LDI	R17,1
    009D 30EB      CPI	R30,0xB
    009E 07F1      CPC	R31,R17
    009F F021      BEQ	0x00A4
    00A0 95C8      LPM
    00A1 9631      ADIW	R30,1
    00A2 920D      ST	R0,X+
    00A3 CFF9      RJMP	0x009D
    00A4 DB15      RCALL	_main
_exit:
    00A5 CFFF      RJMP	_exit
FILE: E:\NumberDisplay\cfile\delay.c
(0001) #define DELAY_C
(0002) #include "main.h"
(0003) #define XTAL 4    //晶振频率,单位MHz
(0004) void delay_1us(void)                 //1us延时函数
(0005)   {
(0006)    asm("nop");
_delay_1us:
    00A6 0000      NOP
    00A7 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    00A8 DBEC      RCALL	push_gset2
    00A9 01B8      MOVW	R22,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)       //N us延时函数
(0010)   {
(0011)    unsigned int i=0;
    00AA 2744      CLR	R20
    00AB 2755      CLR	R21
(0012)    for (i=0;i<n;i++)
    00AC C003      RJMP	0x00B0
(0013)    delay_1us();
    00AD DFF8      RCALL	_delay_1us
    00AE 5F4F      SUBI	R20,0xFF
    00AF 4F5F      SBCI	R21,0xFF
    00B0 1746      CP	R20,R22
    00B1 0757      CPC	R21,R23
    00B2 F3D0      BCS	0x00AD
    00B3 DBD3      RCALL	pop_gset2
    00B4 9508      RET
(0014)   }
(0015)   
(0016) void delay_1ms(void)                 //1ms延时函数
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
  i                    --> R16
    00B5 2700      CLR	R16
    00B6 2711      CLR	R17
    00B7 C002      RJMP	0x00BA
    00B8 5F0F      SUBI	R16,0xFF
    00B9 4F1F      SBCI	R17,0xFF
    00BA 330A      CPI	R16,0x3A
    00BB E0E2      LDI	R30,2
    00BC 071E      CPC	R17,R30
    00BD F3D0      BCS	0x00B8
    00BE 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    00BF DBD5      RCALL	push_gset2
    00C0 01B8      MOVW	R22,R16
(0020)   }
(0021)   
(0022) void delay_nms(unsigned int n)       //N ms延时函数
(0023)   {
(0024)    unsigned int i=0;
    00C1 2744      CLR	R20
    00C2 2755      CLR	R21
(0025)    for (i=0;i<n;i++)
    00C3 C004      RJMP	0x00C8
(0026)    {
(0027)       delay_1ms();
    00C4 DFF0      RCALL	_delay_1ms
(0028) 	  WDR(); 
    00C5 95A8      WDR
    00C6 5F4F      SUBI	R20,0xFF
    00C7 4F5F      SBCI	R21,0xFF
    00C8 1746      CP	R20,R22
    00C9 0757      CPC	R21,R23
    00CA F3C8      BCS	0x00C4
    00CB DBBB      RCALL	pop_gset2
    00CC 9508      RET
_InitIo:
    00CD DBC7      RCALL	push_gset2
    00CE 9722      SBIW	R28,2
FILE: E:\NumberDisplay\cfile\macoh.c
(0001) #define   MACOH_C
(0002) #include "main.h"
(0003) 
(0004) #define  set                 0x07
(0005) #define  left                 0x0b
(0006) #define  set_left           0x03
(0007) #define  down              0x0d
(0008) #define  up                  0x0e
(0009) #define  set3s              0x17
(0010) #define  left3s              0x1b
(0011) #define  set_left3s         0x13
(0012) #define  down_up         0x0c
(0013) #define     ds          0
(0014) #define     cp          1
(0015) #define    sh_cp      2
(0016) #define    scl_set     50
(0017) //----------------------------------------------------------------------------------------------------------------------------------------------------------------
(0018) unsigned char    co[ ]             ={33,33,33,33,33,33};                                 //--------字符数组
(0019) unsigned char    in[ ]           ={19,13,5,12,20,1};
(0020) unsigned char    inm[ ]         ={44,14,12,16,16,13};
(0021) unsigned char    in_msa[ ]     ={16,16,13,10,10,10};
(0022) unsigned char    in_msb[ ]     ={44,14,10,10,10,10};
(0023) unsigned char    in_10k[ ]        ={51,54,0,1,10,10};
(0024) unsigned char    in_2k[ ]       ={51,54,2,10,10,10};
(0025) unsigned char    in_25h[ ]       ={51,5,2,10,10,10};
(0026) unsigned char    rst[ ]           ={10,24,5,23,10,10};
(0027) unsigned char    lock[ ]           ={10,54,15,0,19,10};
(0028) unsigned char    so_1[ ]        ={12,12,12,12,12,12};
(0029) unsigned char    psx[ ]         ={10,1,12,5,22,10};
(0030) unsigned char    tr[ ]            ={10,10,23,24,10,10};
(0031) unsigned char    tr_x[ ]        ={10,1,12,23,24,10};
(0032) unsigned char    scl[ ]         ={50,12,12,19,15,5};
(0033) unsigned char    nega[ ]     ={10,13,45,17,20,10};
(0034) unsigned char    off[ ]     ={18,18,21,10,10,10};
(0035) unsigned char    on[ ]     ={20,21,10,10,10,10};
(0036) unsigned char    pont[ ]     ={10,24,20,21,22,10};
(0037) unsigned char    ponddd[ ]={0,0,0,0,0,0};
(0038) //---------------------------------------------------------------------------------------------------------------------------------------------------------------
(0039) unsigned char    dhitemp[ ]={0,0,0,0,0,0,0};                                                   //高6位显存
(0040) unsigned char    dlotemp[ ]={0,0,0,0,0,0,0};                                                   //低6位显存
(0041) unsigned char    comtep[ ] ={10,10,10,10,10,10};
(0042) unsigned char    *v=comtep;
(0043) unsigned char    *p=dhitemp;
(0044) unsigned char    *o=dlotemp;
(0045) //-----------------------------------------------------------------------------------------------------------------------------------------------------------
(0046) long                         tempcnt,negaon_off;                                                                    //显示值
(0047) unsigned    int          lockda,scldata[ ] = {10,5};                                                  //倍率值
(0048) unsigned char          trdata_x[ ]={1,2,3};                                                  //动作保持值123
(0049) unsigned char          trdata, pontdata,resettemp, intemp,inmtemp,negdata,key=0;        
(0050)                                                         //动作保持值
(0051)                                                         //小数点位置值                                                                
(0052)                                                         //复归模式值
(0053)                                                         //信号范围设定值
(0054)                                                         //加减算设定值
(0055) extern       long                                timeset[ ];                                            //计数设定值
(0056) extern       long                                Contdata ;                                             //计数现在值
(0057) extern      unsigned    int             ti[],ticnt,keytime ;
(0058) extern     unsigned   char           keybit,kt[];
(0059) unsigned    char                            tbit=0;                                                    //ps现在显示第几组
(0060) //---------------------------------------------------------------------------------------------------------------------------------------------------
(0061) unsigned char    table[56]= //-------------------------------------------------------------------------------显示表
(0062) {
(0063)   /*  0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,  */
(0064)   0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,
(0065)   //   1--------------------------------------------10 //
(0066)   0X80,   /*.  11*/ 0X40,   /*-  12*/ 0X77,   /*a  13*/ 0X7c,   /*b  14*/ 0X39,   /*c  15*/ 0X5e,   /*d  16*/
(0067)   0X79,   /*e  17*/ 0X71,   /*f  18*/ 0X38,   /*l  19*/ 0X54,   /*n  20*/ 0X5c,   /*o  21*/ 0X73,   /*p  22*/
(0068)   0X50,   /*r  23*/ 0X78,   /*t  24*/
(0069)   0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x80,0x80,//36
(0070)   0xbf,0X77,0X7c,0X39,0X5e,0X79,0X71,0X6e,0X3d,0X5c,0X73,0X37,0X7b,0x64,0x76,0xd4,0x88,0x7a,0xc0//55
(0071)   //   1--------------------------------------------10 // 
(0072) };
(0073) //-------------------------------------------------------------------------------------------------------------------------------------------------------
(0074) 
(0075) void InitIo(void)
(0076) {   
(0077)     
(0078) 
(0079)     CLI();
    00CF 94F8      BCLR	7
(0080) 	WDR();
    00D0 95A8      WDR
(0081) 	WDTCSR = 0x1f;  
    00D1 E18F      LDI	R24,0x1F
    00D2 93800060  STS	0x60,R24
(0082) 	WDTCSR = 0x29;  
    00D4 E289      LDI	R24,0x29
    00D5 93800060  STS	0x60,R24
(0083) 	ACSR    = 0X01;	
    00D7 E081      LDI	R24,1
    00D8 BF80      OUT	0x30,R24
(0084)     EICRA = 0x0e;
    00D9 E08E      LDI	R24,0xE
    00DA 93800069  STS	0x69,R24
(0085)     EIMSK = 0x03;
    00DC E083      LDI	R24,3
    00DD BB8D      OUT	0x1D,R24
(0086)     TCCR1B = 0x00; //stop
    00DE 2422      CLR	R2
    00DF 92200081  STS	0x81,R2
    00E1 DDD4      RCALL	0x0EB6
(0087)     TCNT1H = 0xFD; //setup
(0088)     TCNT1L = 0x8F;
(0089)     OCR1AH = 0x02;
    00E2 E082      LDI	R24,2
    00E3 93800089  STS	0x89,R24
(0090)     OCR1AL = 0x71;
    00E5 E781      LDI	R24,0x71
    00E6 93800088  STS	0x88,R24
(0091)     OCR1BH = 0x02;
    00E8 E082      LDI	R24,2
    00E9 9380008B  STS	0x8B,R24
(0092)     OCR1BL = 0x71;
    00EB E781      LDI	R24,0x71
    00EC 9380008A  STS	0x8A,R24
(0093)     ICR1H  = 0x02;
    00EE E082      LDI	R24,2
    00EF 93800087  STS	0x87,R24
(0094)     ICR1L  = 0x71;
    00F1 E781      LDI	R24,0x71
    00F2 93800086  STS	0x86,R24
(0095)     TCCR1A = 0x00;
    00F4 92200080  STS	0x80,R2
(0096)     TCCR1B = 0x03; //start Timer
    00F6 E083      LDI	R24,3
    00F7 93800081  STS	0x81,R24
(0097)     TIMSK0 = 0x10; //timer 0 interrupt sources
    00F9 E180      LDI	R24,0x10
    00FA 9380006E  STS	0x6E,R24
(0098)     TIMSK1 = 0x01; //timer 1 interrupt sources
    00FC E081      LDI	R24,1
    00FD 9380006F  STS	0x6F,R24
(0099)     TIMSK2 = 0x00; //timer 2 interrupt sources
    00FF 92200070  STS	0x70,R2
(0100)     PCMSK0 = 0x10; //pin change mask 0 
    0101 E180      LDI	R24,0x10
    0102 9380006B  STS	0x6B,R24
(0101)     PCMSK1 = 0x00; //pin change mask 1 
    0104 9220006C  STS	0x6C,R2
(0102)     PCMSK2 = 0x00; //pin change mask 2
    0106 9220006D  STS	0x6D,R2
(0103)     PCICR = 0x01; //pin change enable 
    0108 E081      LDI	R24,1
    0109 93800068  STS	0x68,R24
(0104)     DDRB  = 0x00;
    010B B824      OUT	0x04,R2
(0105) 	PORTB = 0xff;
    010C EF8F      LDI	R24,0xFF
    010D B985      OUT	0x05,R24
(0106)     DDRC   = 0xff;
    010E B987      OUT	0x07,R24
(0107) 	PORTC = 0x00;
    010F B828      OUT	0x08,R2
(0108) 	DDRD   = 0b00110000;
    0110 E380      LDI	R24,0x30
    0111 B98A      OUT	0x0A,R24
(0109) 	PORTD = 0b11001111;  
    0112 EC8F      LDI	R24,0xCF
    0113 B98B      OUT	0x0B,R24
(0110) 	pontdata  = EEPROMread(0x10);
    0114 E100      LDI	R16,0x10
    0115 E010      LDI	R17,0
    0116 DBDC      RCALL	_EEPROMread_extIO
    0117 930001DB  STS	pontdata,R16
(0111) 	resettemp = EEPROMread(0x11);
    0119 E101      LDI	R16,0x11
    011A E010      LDI	R17,0
    011B DBD7      RCALL	_EEPROMread_extIO
    011C 930001DA  STS	resettemp,R16
(0112) 	intemp    = EEPROMread(0x12); 
    011E E102      LDI	R16,0x12
    011F E010      LDI	R17,0
    0120 DBD2      RCALL	_EEPROMread_extIO
    0121 930001D9  STS	intemp,R16
(0113) 	trdata     = EEPROMread(0x13);
    0123 E103      LDI	R16,0x13
    0124 E010      LDI	R17,0
    0125 DBCD      RCALL	_EEPROMread_extIO
    0126 930001DC  STS	trdata,R16
(0114) 	inmtemp = EEPROMread(0x14);
    0128 E104      LDI	R16,0x14
    0129 E010      LDI	R17,0
    012A DBC8      RCALL	_EEPROMread_extIO
    012B 930001D8  STS	inmtemp,R16
(0115)     negdata  =EEPROMread(0x16);
    012D E106      LDI	R16,0x16
    012E E010      LDI	R17,0
    012F DBC3      RCALL	_EEPROMread_extIO
    0130 930001D7  STS	negdata,R16
    0132 DC74      RCALL	0x0DA7
    0133 DDE9      RCALL	0x0F1D
(0116)     EEPROM_READ(0x20,scldata);                          
    0134 DBD2      RCALL	_EEPROMReadBytes_extIO
    0135 DCDE      RCALL	0x0E14
(0117)     EEPROM_READ(0x30,trdata_x);
    0136 DBD0      RCALL	_EEPROMReadBytes_extIO
    0137 DC6F      RCALL	0x0DA7
    0138 DD73      RCALL	0x0EAC
(0118) 	EEPROM_READ(0x40,timeset[0]);
    0139 DBCD      RCALL	_EEPROMReadBytes_extIO
    013A DC6C      RCALL	0x0DA7
    013B DDC8      RCALL	0x0F04
(0119) 	EEPROM_READ(0x50,timeset[1]);
    013C DBCA      RCALL	_EEPROMReadBytes_extIO
    013D DC69      RCALL	0x0DA7
    013E DDF7      RCALL	0x0F36
(0120) 	EEPROM_READ(0x60,timeset[2]);
    013F DBC7      RCALL	_EEPROMReadBytes_extIO
    0140 DC66      RCALL	0x0DA7
    0141 DDE0      RCALL	0x0F22
(0121) 	EEPROM_READ(0x93,Contdata);
    0142 DBC4      RCALL	_EEPROMReadBytes_extIO
(0122) 	EEPROM_READ(0xa0,lockda);
    0143 E082      LDI	R24,2
    0144 E090      LDI	R25,0
    0145 8399      STD	Y+1,R25
    0146 8388      STD	Y+0,R24
    0147 ED2D      LDI	R18,0xDD
    0148 E031      LDI	R19,1
    0149 EA00      LDI	R16,0xA0
    014A E010      LDI	R17,0
    014B DBBB      RCALL	_EEPROMReadBytes_extIO
(0123) 	EEPROM_READ(0xb0, kt[0]);
    014C E081      LDI	R24,1
    014D E090      LDI	R25,0
    014E 8399      STD	Y+1,R25
    014F 8388      STD	Y+0,R24
    0150 EE28      LDI	R18,0xE8
    0151 E031      LDI	R19,1
    0152 EB00      LDI	R16,0xB0
    0153 E010      LDI	R17,0
    0154 DBB2      RCALL	_EEPROMReadBytes_extIO
(0124) 	if(negdata==0) negaon_off=0;
    0155 902001D7  LDS	R2,negdata
    0157 2022      TST	R2
    0158 F419      BNE	0x015C
    0159 DC48      RCALL	0x0DA2
    015A DC88      RCALL	0x0DE3
    015B C005      RJMP	0x0161
(0125) 	else                negaon_off=-100000;
    015C E640      LDI	R20,0x60
    015D E759      LDI	R21,0x79
    015E EF6E      LDI	R22,0xFE
    015F EF7F      LDI	R23,0xFF
    0160 DC82      RCALL	0x0DE3
(0126) 	if(intemp==1)            { PORTD|= BIT(4);}

⌨️ 快捷键说明

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