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

📄 key.lst

📁 M8+1302+18b20+8位数码管的sch和gcc源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   1               		.file	"key.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  72               	.global	key_delay
  74               	key_delay:
   1:key.c         **** #define key_c
   2:key.c         **** #include "main.h"
   3:key.c         **** void key_scan(void)
   4:key.c         **** {
   5:key.c         **** 	if(0==(in_look_date())) 
   6:key.c         **** 	{
   7:key.c         **** 		display_date();
   8:key.c         **** 	}
   9:key.c         **** 	else if(0==(in_look_temperature()))
  10:key.c         **** 	{
  11:key.c         **** 		display_temperature();
  12:key.c         **** 	}
  13:key.c         **** 	else if(0==(in_look_timer()))
  14:key.c         **** 	{	
  15:key.c         **** 		do{
  16:key.c         **** 			flash_control=0x01;
  17:key.c         **** 			display_timer(1,timer0_hour,timer0_minute);
  18:key.c         **** 			if(0==(in_shift())) key_delay();
  19:key.c         **** 		}while(in_shift());
  20:key.c         **** 		do{
  21:key.c         **** 			flash_control=0x01;
  22:key.c         **** 			display_timer(2,timer1_hour,timer1_minute);
  23:key.c         **** 			if(0==(in_shift())) key_delay();
  24:key.c         **** 		}while(in_shift());
  25:key.c         **** 		do{
  26:key.c         **** 			flash_control=0x01;
  27:key.c         **** 			display_timer(3,timer2_hour,timer2_minute);
  28:key.c         **** 			if(0==(in_shift())) key_delay();
  29:key.c         **** 		}while(in_shift());
  30:key.c         **** 		do{
  31:key.c         **** 			flash_control=0x01;
  32:key.c         **** 			display_timer(4,timer3_hour,timer3_minute);
  33:key.c         **** 			if(0==(in_shift())) key_delay();
  34:key.c         **** 		}while(in_shift());
  35:key.c         **** 		do{
  36:key.c         **** 			flash_control=0x01;
  37:key.c         **** 			display_timer(5,timer4_hour,timer4_minute);			
  38:key.c         **** 			if(0==(in_shift())) key_delay();
  39:key.c         **** 		}while(in_shift());
  40:key.c         **** 		do{
  41:key.c         **** 			flash_control=0x01;
  42:key.c         **** 			display_timer(6,timer5_hour,timer5_minute);
  43:key.c         **** 			if(0==(in_shift())) key_delay();
  44:key.c         **** 		}while(in_shift());
  45:key.c         **** 	}
  46:key.c         **** 	else if(second<5) display_temperature();
  47:key.c         **** 	else if(second<10) display_date();
  48:key.c         **** 	else display_time();
  49:key.c         **** 	
  50:key.c         **** 	if(0==(in_set_time()))
  51:key.c         **** 	{		
  52:key.c         **** 		//年
  53:key.c         **** 		do{
  54:key.c         **** 			//年个位
  55:key.c         **** 			do{
  56:key.c         **** 				flash_control=0x80;
  57:key.c         **** 				display_year();
  58:key.c         **** 				if(0==(in_add())) key_delay();
  59:key.c         **** 				if(0==(in_add()))
  60:key.c         **** 				{
  61:key.c         **** 					year++;
  62:key.c         **** 					if((year&0x0f)>=0x0a) year&=0xf0;
  63:key.c         **** 				}
  64:key.c         **** 				if(0==(in_shift())) key_delay();
  65:key.c         **** 			}while(in_shift());
  66:key.c         **** 			//年十位
  67:key.c         **** 			do{
  68:key.c         **** 				flash_control=0x40;
  69:key.c         **** 				display_year();
  70:key.c         **** 				if(0==(in_add())) key_delay();
  71:key.c         **** 				if(0==(in_add()))
  72:key.c         **** 				{
  73:key.c         **** 					year+=0x10;
  74:key.c         **** 					if((year&0xf0)>=0xa0) year&=0x0f;
  75:key.c         **** 				}
  76:key.c         **** 				if(0==(in_shift())) key_delay();
  77:key.c         **** 			}while(in_shift());			
  78:key.c         **** 		}while(in_shift());
  79:key.c         **** 		
  80:key.c         **** 		//月-日-周
  81:key.c         **** 		do{	
  82:key.c         **** 			//周
  83:key.c         **** 			do{
  84:key.c         **** 				flash_control=0x80;
  85:key.c         **** 				display_date();
  86:key.c         **** 				if(0==(in_add())) key_delay();
  87:key.c         **** 				if(0==(in_add()))
  88:key.c         **** 				{
  89:key.c         **** 					week++;
  90:key.c         **** 					if(week>=0x08) week=0;
  91:key.c         **** 				}
  92:key.c         **** 				if(0==(in_shift())) key_delay();
  93:key.c         **** 			}while(in_shift());
  94:key.c         **** 			
  95:key.c         **** 			//日个位
  96:key.c         **** 			do{
  97:key.c         **** 				flash_control=0x10;
  98:key.c         **** 				display_date();
  99:key.c         **** 				if(0==(in_add())) key_delay();
 100:key.c         **** 				if(0==(in_add()))
 101:key.c         **** 				{
 102:key.c         **** 					day++;
 103:key.c         **** 					if((day&0x0f)>=0x0a) day&=0xf0;
 104:key.c         **** 				}
 105:key.c         **** 				if(0==(in_shift())) key_delay();
 106:key.c         **** 			}while(in_shift());
 107:key.c         **** 			
 108:key.c         **** 			//日十位
 109:key.c         **** 			do{
 110:key.c         **** 				flash_control=0x08;
 111:key.c         **** 				display_date();
 112:key.c         **** 				if(0==(in_add())) key_delay();
 113:key.c         **** 				if(0==(in_add()))
 114:key.c         **** 				{
 115:key.c         **** 					day+=0x10;
 116:key.c         **** 					if((day&0xf0)>=0x40) day&=0x0f;
 117:key.c         **** 				}
 118:key.c         **** 				if(0==(in_shift())) key_delay();
 119:key.c         **** 			}while(in_shift());
 120:key.c         **** 			
 121:key.c         **** 			//月个位
 122:key.c         **** 			do{
 123:key.c         **** 				flash_control=0x02;
 124:key.c         **** 				display_date();
 125:key.c         **** 				if(0==(in_add())) key_delay();
 126:key.c         **** 				if(0==(in_add()))
 127:key.c         **** 				{
 128:key.c         **** 					month++;
 129:key.c         **** 					if((month&0x0f)>=0x0a) month&=0xf0;
 130:key.c         **** 				}
 131:key.c         **** 				if(0==(in_shift())) key_delay();
 132:key.c         **** 			}while(in_shift());
 133:key.c         **** 			
 134:key.c         **** 			//月十位
 135:key.c         **** 			do{
 136:key.c         **** 				flash_control=0x01;
 137:key.c         **** 				display_date();
 138:key.c         **** 				if(0==(in_add())) key_delay();
 139:key.c         **** 				if(0==(in_add()))
 140:key.c         **** 				{
 141:key.c         **** 					month+=0x10;
 142:key.c         **** 					if((month&0xf0)>=0x20) month&=0x0f;
 143:key.c         **** 				}
 144:key.c         **** 				if(0==(in_shift())) key_delay();
 145:key.c         **** 			}while(in_shift());
 146:key.c         **** 		}while(in_shift());
 147:key.c         **** 		
 148:key.c         **** 		//时-分-秒
 149:key.c         **** 		do{	
 150:key.c         **** 			//秒个位
 151:key.c         **** 			do{
 152:key.c         **** 				flash_control=0x80;
 153:key.c         **** 				display_time();
 154:key.c         **** 				if(0==(in_add())) key_delay();
 155:key.c         **** 				if(0==(in_add()))
 156:key.c         **** 				{
 157:key.c         **** 					second++;
 158:key.c         **** 					if((second&0x0f)>=0x0a) second&=0xf0;
 159:key.c         **** 				}
 160:key.c         **** 				if(0==(in_shift())) key_delay();
 161:key.c         **** 			}while(in_shift());
 162:key.c         **** 			//秒十位
 163:key.c         **** 			do{
 164:key.c         **** 				flash_control=0x40;
 165:key.c         **** 				display_time();
 166:key.c         **** 				if(0==(in_add())) key_delay();
 167:key.c         **** 				if(0==(in_add()))
 168:key.c         **** 				{
 169:key.c         **** 					second+=0x10;
 170:key.c         **** 					if((second&0xf0)>=0x60) second&=0x0f;
 171:key.c         **** 				}
 172:key.c         **** 				if(0==(in_shift())) key_delay();
 173:key.c         **** 			}while(in_shift());
 174:key.c         **** 			
 175:key.c         **** 			//分个位
 176:key.c         **** 			do{
 177:key.c         **** 				flash_control=0x10;
 178:key.c         **** 				display_time();
 179:key.c         **** 				
 180:key.c         **** 				if(0==(in_add())) key_delay();
 181:key.c         **** 				if(0==(in_add()))
 182:key.c         **** 				{
 183:key.c         **** 					minute++;
 184:key.c         **** 					if((minute&0x0f)>=0x0a) minute&=0xf0;
 185:key.c         **** 				}
 186:key.c         **** 				if(0==(in_shift())) key_delay();
 187:key.c         **** 			}while(in_shift());
 188:key.c         **** 			//分十位
 189:key.c         **** 			do{
 190:key.c         **** 				flash_control=0x08;
 191:key.c         **** 				display_time();
 192:key.c         **** 				
 193:key.c         **** 				if(0==(in_add())) key_delay();
 194:key.c         **** 				if(0==(in_add()))
 195:key.c         **** 				{
 196:key.c         **** 					minute+=0x10;
 197:key.c         **** 					if((minute&0xf0)>=0x60) minute&=0x0f;
 198:key.c         **** 				}
 199:key.c         **** 				if(0==(in_shift())) key_delay();
 200:key.c         **** 			}while(in_shift());
 201:key.c         **** 			
 202:key.c         **** 			//时个位
 203:key.c         **** 			do{
 204:key.c         **** 				flash_control=0x02;
 205:key.c         **** 				display_time();
 206:key.c         **** 				
 207:key.c         **** 				if(0==(in_add())) key_delay();
 208:key.c         **** 				if(0==(in_add()))
 209:key.c         **** 				{
 210:key.c         **** 					hour++;
 211:key.c         **** 					if((hour&0x0f)>=0x0a) hour&=0xf0;
 212:key.c         **** 				}
 213:key.c         **** 				if(0==(in_shift())) key_delay();
 214:key.c         **** 			}while(in_shift());
 215:key.c         **** 			//时十位
 216:key.c         **** 			do{
 217:key.c         **** 				flash_control=0x01;
 218:key.c         **** 				display_time();
 219:key.c         **** 				
 220:key.c         **** 				if(0==(in_add())) key_delay();
 221:key.c         **** 				if(0==(in_add()))
 222:key.c         **** 				{
 223:key.c         **** 					hour+=0x10;
 224:key.c         **** 					if((hour&0xf0)>=0x30) hour&=0x0f;
 225:key.c         **** 				}
 226:key.c         **** 				if(0==(in_ok())) key_delay();
 227:key.c         **** 			}while(in_ok());
 228:key.c         **** 		}while(in_ok());
 229:key.c         **** 		ds1302_write_time();
 230:key.c         **** 	}
 231:key.c         **** 	if(0==(in_set_timer()))
 232:key.c         **** 	{
 233:key.c         **** 		//timer1
 234:key.c         **** 		//分个位
 235:key.c         **** 		do{
 236:key.c         **** 			flash_control=0x80;
 237:key.c         **** 			display_timer(1,timer0_hour,timer0_minute);
 238:key.c         **** 			
 239:key.c         **** 			if(0==(in_add())) key_delay();
 240:key.c         **** 			if(0==(in_add()))
 241:key.c         **** 			{
 242:key.c         **** 				timer0_minute++;
 243:key.c         **** 				if((timer0_minute&0x0f)>=0x0a) timer0_minute&=0xf0;
 244:key.c         **** 			}
 245:key.c         **** 			if(0==(in_shift())) key_delay();
 246:key.c         **** 		}while(in_shift());
 247:key.c         **** 		//分十位
 248:key.c         **** 		do{
 249:key.c         **** 			flash_control=0x40;
 250:key.c         **** 			display_timer(1,timer0_hour,timer0_minute);
 251:key.c         **** 			
 252:key.c         **** 			if(0==(in_add())) key_delay();
 253:key.c         **** 			if(0==(in_add()))
 254:key.c         **** 			{
 255:key.c         **** 				timer0_minute+=0x10;
 256:key.c         **** 				if((timer0_minute&0xf0)>=0x60) timer0_minute&=0x0f;
 257:key.c         **** 			}
 258:key.c         **** 			if(0==(in_shift())) key_delay();
 259:key.c         **** 		}while(in_shift());
 260:key.c         **** 		//时个位
 261:key.c         **** 		do{
 262:key.c         **** 			flash_control=0x10;
 263:key.c         **** 			display_timer(1,timer0_hour,timer0_minute);
 264:key.c         **** 			
 265:key.c         **** 			if(0==(in_add())) key_delay();
 266:key.c         **** 			if(0==(in_add()))
 267:key.c         **** 			{
 268:key.c         **** 				timer0_hour++;
 269:key.c         **** 				if((timer0_hour&0x0f)>=0x0a) timer0_hour&=0xf0;
 270:key.c         **** 			}
 271:key.c         **** 			if(0==(in_shift())) key_delay();
 272:key.c         **** 		}while(in_shift());
 273:key.c         **** 		//时十位
 274:key.c         **** 		do{
 275:key.c         **** 			flash_control=0x08;
 276:key.c         **** 			display_timer(1,timer0_hour,timer0_minute);
 277:key.c         **** 			
 278:key.c         **** 			if(0==(in_add())) key_delay();
 279:key.c         **** 			if(0==(in_add()))
 280:key.c         **** 			{
 281:key.c         **** 				timer0_hour+=0x10;
 282:key.c         **** 				if((timer0_hour&0xf0)>=0x30) timer0_hour&=0x0f;
 283:key.c         **** 			}
 284:key.c         **** 			if(0==(in_shift())) key_delay();
 285:key.c         **** 		}while(in_shift());		
 286:key.c         **** 		eeprom_write_byte((uchar *)(timer0_address+0),timer0_hour);
 287:key.c         **** 		eeprom_write_byte((uchar *)(timer0_address+1),timer0_minute);
 288:key.c         **** 		
 289:key.c         **** 		//timer2
 290:key.c         **** 		//分个位
 291:key.c         **** 		do{
 292:key.c         **** 			flash_control=0x80;
 293:key.c         **** 			display_timer(2,timer1_hour,timer1_minute);
 294:key.c         **** 			
 295:key.c         **** 			if(0==(in_add())) key_delay();
 296:key.c         **** 			if(0==(in_add()))
 297:key.c         **** 			{
 298:key.c         **** 				timer1_minute++;
 299:key.c         **** 				if((timer1_minute&0x0f)>=0x0a) timer1_minute&=0xf0;
 300:key.c         **** 			}
 301:key.c         **** 			if(0==(in_shift())) key_delay();
 302:key.c         **** 		}while(in_shift());
 303:key.c         **** 		//分十位
 304:key.c         **** 		do{
 305:key.c         **** 			flash_control=0x40;
 306:key.c         **** 			display_timer(2,timer1_hour,timer1_minute);
 307:key.c         **** 			
 308:key.c         **** 			if(0==(in_add())) key_delay();
 309:key.c         **** 			if(0==(in_add()))
 310:key.c         **** 			{
 311:key.c         **** 				timer1_minute+=0x10;
 312:key.c         **** 				if((timer1_minute&0xf0)>=0x60) timer1_minute&=0x0f;
 313:key.c         **** 			}
 314:key.c         **** 			if(0==(in_shift())) key_delay();
 315:key.c         **** 		}while(in_shift());
 316:key.c         **** 		//时个位
 317:key.c         **** 		do{
 318:key.c         **** 			flash_control=0x10;
 319:key.c         **** 			display_timer(2,timer1_hour,timer1_minute);
 320:key.c         **** 			
 321:key.c         **** 			if(0==(in_add())) key_delay();
 322:key.c         **** 			if(0==(in_add()))
 323:key.c         **** 			{
 324:key.c         **** 				timer1_hour++;

⌨️ 快捷键说明

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