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

📄 pwm.c

📁 基于STC12C5412AD单片机的简易存储示波器设计
💻 C
字号:
//模块:PWM.C
//功能:PWM解码模块
//晶振:24.000MHz
//芯片: STC12C5412AD
//版本:V1.0.0
//设计:魏广寅
//日期:2007.4.10
#include "stc12c5412ad.h"
#define uchar unsigned char			  
#define uint unsigned int
#define CNT 32
//--------------------------------------------------------------------
extern uchar keyfuncindex;
extern void d2(void);
extern void lcd_init(void);
extern void dis_one_char(uchar x,uchar y,uchar asc_num,bit b_flag);
extern void dis_one_zi(uchar x_add,uchar y_add,uchar code *po,bit back_flag,bit char_moudle);
extern void delay(uint time);
extern void delay_1(uchar time);
extern void dis_cls(void);
extern uchar code tab[16];
uchar data value_h[CNT];
uchar count=0;
sbit key0=P3^0;
sbit key1=P3^1;
//--------------------------------------------------------------------
void pwm_init()
{
 	TMOD=0x01;
	TH0=0;
	TL0=30;
	IT0=1;
	EX0=1;
	EA=1;
	//TR0=1;
}
//--------------------------------------------------------------------
void clk() interrupt 0 
{
		if(TH0==0 & TL0==0)
		TR0=1;
		else
		{
	
			TR0=0;
			value_h[count]=TH0;
			TH0=0;
			TL0=30;
			count++;
			if(count==CNT)
			{
				EX0=0;
				count=0;
				TH0=0;
				TL0=0;
				TR0=0;
			}
			TR0=1;
		}
}
//--------------------------------------------------------------------
void bin_to_hex(uchar x,uchar y,uchar bin)
{
 	uchar b_h,b_l;
	b_h=bin & 0xf0;
	b_h>>=4;
	b_h=tab[b_h];
	b_l=bin & 0x0f;
	b_l=tab[b_l];
	y*=2;
	dis_one_char(x,y,b_h,1);
	dis_one_char(x,y+1,b_l,1);
}
//--------------------------------------------------------------------
void pwm()
{
 	uchar i=0,x=0,y=0,ii;
g:	pwm_init();
	dis_cls();
	while(1)
	{
		for(x=0;x<4;x++)
		{
			for(y=0;y<8;y++)
			{
				ii=value_h[i];
				bin_to_hex(x,y,ii);
				i++;
			}
		}
		i=0;
		key0=1;
		key1=1;
		delay_1(5);
		if(key0==0)
		{
			
			for(i=0;i<32;i++)
			{
				value_h[i]=0;
				
			}
			goto exit;
		}

		if(key1==0)
		{
			
			for(i=0;i<32;i++)
			{
				value_h[i]=0;
				
			}
			dis_cls();
			TMOD=0x00;
			TH0=0;
			TL0=0;
			count=0;
			EX0=0;
			EA=0;
			TR0=0;
			TR1=0;
			goto g;
		}

	}
	exit:for(i=0;i<32;i++)
			{
				value_h[i]=0;
				
			}
	TMOD=0x00;
	TH0=0;
	TL0=0;
	count=0;
	EX0=0;
	EA=0;
	TR0=0;
	TR1=0;
	keyfuncindex=2;
	d2();
}
//--------------------------------------------------------------------

⌨️ 快捷键说明

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