这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 1986330 MCU DIY进程帖

共24条 3/3 1 2 3 跳转至
助工
2011-12-26 11:23:05     打赏
21楼
定时器程序
//====================================================
//为定时器0初始化程序
//入口参数:空
//出口参数:空
//====================================================
void timer0_init(void)
{
 TMOD &= 0xf0;
 TMOD |= 0x01;  //定时器0工作在16位定时器模式下
 TH0 = (0xFFFF-SystemClock/12/Timer25ms)>>8;//定时25ms
 TL0 = (0xFFFF-SystemClock/12/Timer25ms)%256;
 ET0 = 1;    //开启中断
 TR0 = 1;    //开始计数
}
/********************************************************/
//%%%%%%%%%%%%%%%%%%%中断服务函数%%%%%%%%%%%%%%%%%%%%%%
//====================================================
//为定时器0中断处理程序
//入口参数:空
//出口参数:空
//====================================================
void timer0_irq(void) interrupt 1
{
 EA = 0;
 TH0 = (0xFFFF-SystemClock/12/Timer10ms)>>8;//定时25ms
 TL0 = (0xFFFF-SystemClock/12/Timer10ms)%256;
 system_time ++;
 EA = 1;
}
/********************************************************/

助工
2011-12-26 11:23:47     打赏
22楼

LCD1602操作程序
#define  LCD_DB P0
sbit LCD_RS = P2^4;
sbit LCD_RW = P2^5;
sbit LCD_E  = P2^6;
/**********************************************************/
void delay_n40us(unsigned int n)
{
 unsigned int i;
 unsigned char j;
 for(i=n;i>0;i--)
  for(j=0;j<2;j++);
}
/**********************************************************/
void LCD_write_command(unsigned char dat)
{
 LCD_DB = dat;
 LCD_RS = 0;
 LCD_E  = 1;
 LCD_E  = 0;
 delay_n40us(1);
}
/**********************************************************/
void LCD_write_data(unsigned char dat)
{
 LCD_DB = dat;
 LCD_RS = 1;
 LCD_RW = 0;
 LCD_E  = 1;
 LCD_E  = 0;
 delay_n40us(1);
}
/**********************************************************/
void LCD_disp_char(unsigned char x,unsigned char y,unsigned char dat)
{
 unsigned char address;
 if(y==1)
  address = 0x80 + x;
 else
  address = 0xc0 + x;
 LCD_write_command(address);
 LCD_write_data(dat);
}
/**********************************************************/
void LCD_check_busy(void)
{
 do{
  LCD_E = 0;
  LCD_RS = 0;
  LCD_RW = 1;
  LCD_DB = 0xff;
  LCD_E = 1;
 }while(LCD_DB^7 == 1);
}
/**********************************************************/
void LCD_init(void)
{
 LCD_write_command(0x38);
 LCD_write_command(0x0c);
 LCD_write_command(0x06);
 LCD_write_command(0x01);
 delay_n40us(100);
}
/**********************************************************/


助工
2011-12-26 11:25:05     打赏
23楼
所有代码均可在同一主程序内运行
可将所有资源同时使用

菜鸟
2012-01-28 14:46:47     打赏
24楼

共24条 3/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]