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

📄 tinyusb.c

📁 实现两块51单片机通过串口通信 包括单片机初始化
💻 C
字号:
#include <absacc.h>
#include <reg51.h>
#include <stdio.h>
#include <Uart.h>
/* 定时器初值 */
#define V_T1   0xfd   /*SCOM  9600 baud,  ! notice: crystal 11.0592MHz */
#define V_TH0   0xee  /*   ~ 5ms ,  ! notice: crystal 11.0592MHz */
#define V_TL0   0x00
/* 1s软件定时器溢出值,200个5ms */
#define V_T1s	200

/* 按键 */
sbit KEY1=	P1^0;
sbit KEY2=	P1^1;
sbit LED1=	P1^2;
sbit LED2=	P1^3;
/* 1s软件定时器计数 */
unsigned char clock1s;
/* 1s软件定时器溢出标志,位变量 */
bit clock1s_flag;
/* 测试用计数类型 */
unsigned int test_counter;

char ch=0;
char nova=0;
/**** T0时钟中断服务程序
	在本例中,每5ms被执行一次
*****/

timer0() interrupt 1 using 0         
{
	EA=0;  /*关中断*/

	/* 重新对计数器赋初值,并启动定时计数 */
	TH0=V_TH0;
    TL0=V_TL0;
    TR0=1;
	test_counter++;
	if(test_counter>=200)
	{
		clock1s_flag=1;
		test_counter=0;
	}

	EA=1;  /*开中断*/
}

reciever_sender() interrupt 4 using 0
{	
	EA=0;
//	printf("232323\n");
	if(RI)
	{	
		nova=1;
		RI=0;
	}
	EA=1;
}

/**** 主程序
*****/

main()
{
	char NOVA1=0;
	char NOVA2=0;
	unsigned char a=0;
	test_counter=0;
/* 单片机系统初始化 */
    P1=0XFF;
    P3=0XFF;

    /** 中断工作寄存器初始化 **/
    IE=0X80;
    IP=0;
    IT0=0;
    IT1=0;

    /** 定时器工作寄存器初始化 **/
	TMOD=0X21;
	TH1=V_T1;
    TL1=V_T1;
    TH0=V_TH0;
    TL0=V_TL0;
    
    /** 串行通信口工作初始化 **/
	SM0=0;		 /*SCOM MODE 1 (8BIT UART VARBR)*/
    SM1=1;
	SM2=0;
	REN=1;
	TI=1;

	/** 全局变量赋初值 **/
	clock1s=0;
	clock1s_flag=0;

	/** 开定时器,定时器0中断允许 **/
    TR0=1;
    TR1=1;
	ET0=1;
	ES=1;

/* 主循环,本例中,在T0中断服务程序未被执行的空余时间里,处理机在以下程序中不断循环 */
	while(1)
	{
		
		if (clock1s_flag)   /* 检查1秒定时是否到 */
		{
			Send(a++);
		}          
		if(Recieve())
		{
			printf("recieved;");		
		}
	}
}

⌨️ 快捷键说明

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