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

📄 text1.c

📁 单片机快速入门原程序
💻 C
字号:
#include <reg51.h>
#include<stdio.h>
sbit P32 = 0xB2;
sbit P10 = 0x90;
xdata unsigned char RecBuffer[8]=0;/* 16个字节的环形缓冲区*/
unsigned char RecBufferIndex=0;/* 16个字节的环形缓冲区指针*/
unsigned char nRxIndex=0;/* 接收单个字符的位指针*/
unsigned char nRxBit=0;/* 单个字符数据位采样值*/
main()
{ 	
	TMOD=0x01;	/* 定时器0工作在方式1 */
	EX0=1;		/* 外部中断0允许 */
	EA=1;		/* 全局中断允许 */
	nRxIndex=0x00;
	while(1);
}

void int0() interrupt 0 using 0
{	EX0=0;		/* 外部中断0禁止 */
	TH0=0xFF;	/* 写入计数初值到TH0 */
	TL0=0x63;	/* 写入计数初值到TL0 */
				/* 1.5T后溢出 */
	TR0=1;		/* 定时器0准备开始 */
	TF0=0;		/* 定时器0中断标志位清0 */
	ET0=1;		/* 定时器0中断允许*/
}


void Timer0_Overflow() interrupt 1 using 0
{	nRxBit=P32; /* 对管脚P3.2采样 */
     P10=~P10;       /* P10端口电平信号取反 */
	RecBuffer[RecBufferIndex]|=(nRxBit<<nRxIndex);
	TH0=0xFF;	/* 写入计数初值到TH0 */
	TL0=0x97;	/* 写入计数初值到TL0 */
				/* 1T后溢出 */	
	TF0=0;		/* 定时器0中断标志位清0 */
	nRxIndex++;
if(nRxIndex==8)
	{ET0=0;		/*关闭定时器0中断*/
	 EX0=1;		/* 外部中断0允许 */
	nRxIndex=0;	/* 接收下一个数据的D0位 */
	RecBufferIndex++;
	if(RecBufferIndex==8) 
		RecBufferIndex =0;/* 环形缓冲区存满后从头存放 */
	}
}

⌨️ 快捷键说明

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