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

📄 main.c

📁 详细介绍M8两版间通讯
💻 C
字号:
#include <iom8v.h>
#include <macros.h>
extern void led_init(void);
extern void timer0_init(void);
extern void TWI_init(void);
extern unsigned char LedNum[8];

unsigned char StartShow=0xff;
void Delay(unsigned int ms);
//#pragma data:eeprom
char cDataBuff[]={1,3,1,0,0,6,5,1,
									3,9,8,10,10,8,7,8,
									0,7,2,2,6,10,10,6,
									1,2,6,4,2,1,
									8,10}; //10用来分隔两次显示(LED熄灭)
//#pragma data:data
void main(void)
 {
	unsigned char cTemp;
	unsigned char cNum;
	unsigned char *p;
	led_init();
	timer0_init();
	TWI_init();
	SEI();
	for(cNum=9;cNum!=0xff;cNum--)
	 {
		p=LedNum;
		*p++=cNum;
		*p++=cNum;
		*p++=cNum;
		*p++=cNum;
		*p++=cNum;
		*p++=cNum;
		*p++=cNum;
		*p=cNum;
		Delay(200);
	 }
	DDRC|=0b00001000;
	PORTC&=0b11110111;//点亮指示灯

	while(1)
	 {
	 	p=LedNum;
		for(cNum=7;cNum!=0xff;cNum--)//将LED的8位数码管全部熄灭-全部置为10
		 {
			*p++=10;
		 }
		Delay(300);
	 	StartShow=0x00;
	 	/*For为Main程序中的主循环,如果没有要求StartShow,程序将不停循环*/
		for(cNum=0;StartShow!=0xff;cNum++)//将LED的8位数码管向前移位,最后位用数据缓冲区的数据补充进去
		 {		 	
		 	p=&LedNum[7];
		 	cTemp=*(--p);
		 	LedNum[7]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[6]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[5]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[4]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[3]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[2]=cTemp;
		 	cTemp=*(--p);
		 	LedNum[1]=cTemp;
		 	
			cNum&=0b00011111;//如果超过数据缓冲区,则恢复的起始地址
		 	cTemp=cDataBuff[cNum];
		 	LedNum[0]=cTemp;
			Delay(300);			
		 }
	 }
 }
void Delay(unsigned int ms)
 {
	unsigned int iTemp;
	unsigned int iUs;
	for(iTemp=ms;iTemp>0;iTemp--)
	 {
		for(iUs=1000;iUs>0;iUs--);
	 }
 }

⌨️ 快捷键说明

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