1、数组
数组初始化的时候,可以不指定数组长度,但是指定数组长度后,必须保证数组的初始化长度小于等于指定长度,未初始化的元素默认值为0。
2、if语句
3、switch语句
如果不加break,则会继续执行剩下的语句。
二、中断
中断解决了多线程工作的问题,通过设置或默认中断优先级可以控制多个任务同时进行,在使用中断的过程中,一定先使能中断。
三、实例
//使用中断控制数码管 #include<reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; unsigned char code LedChar[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E}; unsigned char LedBuff[6]={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; unsigned char i = 0;//位选 unsigned int cnt = 0;//计算机器周期,定时 unsigned char flages = 0;//位选标志位 void shuma() {unsigned long sec = 0;ENLED = 0;ADDR3 = 1;TMOD = 0x01;TH0 = 0xFC;TL0 = 0x67;TR0 = 1;//时钟使能EA = 1;//总中断使能ET0 = 1;//中断时钟使能while(1){if(flages == 1){flages = 0;sec++;//秒加一LedBuff[0] = LedChar[sec%10];LedBuff[1] = LedChar[sec/10%10];LedBuff[2] = LedChar[sec/100%10];LedBuff[3] = LedChar[sec/1000%10];LedBuff[4] = LedChar[sec/10000%10];LedBuff[5] = LedChar[sec/100000%10];}} } void main() {shuma(); } void InterruptTime0() interrupt 1//中断定义格式,定义中断1 {TH0 = 0xFC;TL0 = 0x67;cnt++;if(cnt >= 1000){cnt = 0;flages = 1;}P0 = 0xFF;//去鬼影switch(i){ case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0];break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1];break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2];break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=LedBuff[3];break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=LedBuff[4];break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff[5];break; default:break;} }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879总结:中断是独立与main函数运行的,当检测到标志位变化时,中断就会响应,检测中断标志位的代码有时候不写,但是系统会自行检测中断,当中断标志位变化时,中断就进行响应,main函数是不调用中断的。