阅读:1547回复:0
成为顶级工程师必读资料(第二章)------顺易捷专业PCB打样陆孟经理推荐
1) 无论什么时候我们都要以实际应用的角度去考虑程序的编写。
(2) 无论什么时候都不要让CPU白白浪费等待,尤其是延时(超过1MS)这样的地方。 (3) 设计相应驱动电路时候,应该仔细阅读芯片的数据手册,了解每个引脚的驱动能力, 以及整个芯片的驱动能力 (4) 最重要的是,如何去释放CPU(参考本章的例子),这是写出合格程序的基础。 1. 深圳顺易捷专业PCB打样: 1:单/双层板:50元/款 数量10PCS;FR-4,板厚0.6~1.6MM,长宽在5*5cm以内,一般交期3-4天; 2:单/双层板:100元/款 数量10PCS;FR-4,板厚0.6~1.6MM,长宽在10*10cm以内,一般交期3-4天; 3:四层板:500元/款 数量10PCS;FR-4,板厚1.0~1.6MM,长宽在10*10cm以内,一般交期5-6天; 4:六层板:1200元/款 数量10PCS;FR-4,板厚1.0~1.6MM,长宽在10*10cm以内,一般交期7~8天; 5:八层板:1800元/款 数量10PCS,FR-4,板厚1.6MM,长宽在10*10CM以内,一般交期7~8天; 以上报价工艺为:FR-4,绿油白字,有铅喷锡工艺,数量为10片内。陆孟经理13662604134 QQ2570422711 业务编号E 附完整程序代码(基于电子工程师之家的单片机开发板) #include<reg52.h> sbit LED_SEG = P1^4; //数码管段选 sbit LED_DIG = P1^5; //数码管位选 sbit LED_CS11 = P1^6; //led控制位 sbit ir=P1^7; #define LED P0 //定义LED接口 bit g_bSystemTime1Ms = 0 ; // 1MS系统时标 unsigned int g_u16LedTimeCount = 0 ; //LED计数器 unsigned char g_u8LedState = 0 ; //LED状态标志, 0表示亮,1表示熄灭 #define LED_ON() LED = 0x00 ; //所有LED亮 #define LED_OFF() LED = 0xff ; //所有LED熄灭 void Timer0Init(void) { TMOD &= 0xf0 ; TMOD |= 0x01 ; //定时器0工作方式1 TH0 = 0xfc ; //定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; } void LedProcess(void) { if(0 == g_u8LedState) //如果LED的状态为亮,则点亮LED { LED_ON() ; } else //否则熄灭LED { LED_OFF() ; } } void LedStateChange(void) { if(g_bSystemTime1Ms) //系统1MS时标到 { g_bSystemTime1Ms = 0 ; g_u16LedTimeCount++ ; //LED计数器加一 if(g_u16LedTimeCount >= 500) //计数达到500,即500MS到了,改变LED的状态。 { g_u16LedTimeCount = 0 ; g_u8LedState = ! g_u8LedState ; } } } void main(void) { Timer0Init() ; EA = 1 ; LED_CS11 = 1 ; //74HC595输出允许 LED_SEG = 0 ; //数码管段选和位选禁止(因为它们和LED共用P0口) LED_DIG = 0 ; while(1) { LedProcess() ; LedStateChange() ; } } void Time0Isr(void) interrupt 1 { TH0 = 0xfc ; //定时器重新赋初值 TL0 = 0x66 ; g_bSystemTime1Ms = 1 ; //1MS时标标志位置位 } “从单片机初学者迈向单片机工程师” |
|
|