📄 tinyusb.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 + -