📄 displa.lst
字号:
__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 + -