2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
एतत् सूक्ष्मनियन्त्रकस्य पीसी-योः मध्ये क्रमिक-पोर्ट्-सञ्चारं साक्षात्करोति, तथा च पीसी-तः निर्देशान् निवेश्य सूक्ष्मनियन्त्रकं नियन्त्रयितुं शक्नोति ।
#include "reg52.h"
#include <intrins.h>
sbit testLed = P3^7;
sfr AUXR = 0x8E; // 屏蔽电磁干扰
void UartInit(){
PCON &= 0x7F; // 不倍速 不倍速甚至可以不用设置
SCON = 0x40; // REN 不是能
TMOD &= 0x0F;
TMOD |= 0x20; // 8位自动重装
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; // 禁止定时器1溢出申请中断
EA = 1;
TR1 = 1; //启动定时器1
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void init(){
UartInit();
testLed = 1;
testLed = 0;
Delay1000ms();
}
void main(){
char msg = 'a';
init();
while(1){
SBUF = msg; // 写入缓存区
testLed = !testLed;
Delay1000ms(); // 延迟用于 为传输数据预留时间
}
}
विलम्बविधिः न उपयुज्यते, संचरणं सफलं वा इति निर्धारयितुं ध्वजबिट् उपयुज्यते, स्ट्रिंग् च प्रेष्यते ।
#include "reg52.h"
#include <intrins.h>
sbit testLed = P3^7;
sfr AUXR = 0x8E; // 屏蔽电磁干扰
void UartInit(){
PCON &= 0x7F; // 不倍速 不倍速甚至可以不用设置
SCON = 0x40; // REN 不是能
TMOD &= 0x0F;
TMOD |= 0x20; // 8位自动重装
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; // 禁止定时器1溢出申请中断
EA = 1;
ES = 1;
TR1 = 1; //启动定时器1
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void init(){
UartInit();
testLed = 1;
testLed = 0;
Delay1000ms();
}
void sendByte(char msg){
SBUF = msg;
while(!TI);
TI = 0;
}
void sendString(char *str){
while(*str!='0'){
sendByte(*str);
str++;
}
}
void main(){
init();
while(1){
sendString("hello worldrn");
testLed = !testLed;
Delay1000ms();
}
}
मुख्यतया, RI ध्वजः 1 इति सेट् भवति वा इति ज्ञातुं प्रश्नविधिः उपयुज्यते ।ध्यायन्तु यत् सॉफ्टवेयरः 0 इति सेट् करोति ।
#include "reg52.h"
#include <intrins.h>
sbit testLed = P3^7;
sfr AUXR = 0x8E; // 屏蔽电磁干扰
char cmd;
void UartInit(){
PCON &= 0x7F; // 不倍速 不倍速甚至可以不用设置
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20; // 8位自动重装
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; // 禁止定时器1溢出申请中断
EA = 1;
ES = 1;
TR1 = 1; //启动定时器1
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void sendByte(char msg){
SBUF = msg;
while(!TI);
TI = 0; // 只是中断标志 但是没有中断函数 则不会触发中断 有中断函数时需要及时置0
}
void sendString(char *str){
while(*str!='0'){
sendByte(*str);
str++;
}
}
void init(){
UartInit();
testLed = 0;
Delay1000ms();
}
void main(){
init();
while(1){
if(RI){
cmd = SBUF;
if(cmd == 'o'){
testLed = 0;
}
else if(cmd == 'c'){
testLed = 1;
}
RI= 0;
}
}
}
#include "reg52.h"
#include <intrins.h>
#include <string.h>
#define SIZE 3
sbit testLed = P3^7;
sbit testLed2 = P3^6;
sfr AUXR = 0x8E; // 屏蔽电磁干扰
char cmd[SIZE];
void UartInit(){
PCON &= 0x7F; // 不倍速 不倍速甚至可以不用设置
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20; // 8位自动重装
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; // 禁止定时器1溢出申请中断
EA = 1;
ES = 1;
TR1 = 1; //启动定时器1
}
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 8;
j = 1;
k = 243;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void sendByte(char msg){
SBUF = msg;
while(!TI);
TI = 0; // 只是中断标志 但是没有中断函数 则不会触发中断 有中断函数时需要及时置0
}
void sendString(char *str){
while(*str!='0'){
sendByte(*str);
str++;
}
}
void init(){
UartInit();
testLed = 0;
testLed2 = 1;
Delay1000ms();
}
void main(){
init();
while(1){
sendString("Hello World!rn");
testLed = !testLed;
Delay1000ms();
}
}
void UartHandler() interrupt 4{
static int i = 0;
char tmp;
if(RI){
RI = 0;
tmp = SBUF;
if(tmp == 'o' || tmp == 'c'||i==SIZE){
i = 0;
}
cmd[i++] = tmp;
if(cmd[0] == 'o' && cmd[1] == 'p'){
testLed2 = 0;
memset(cmd,'0',SIZE);
}
if(cmd[0] == 'c' && cmd[1] == 'l'){
testLed2 = 1;
memset(cmd,'0',SIZE);
}
}
if(TI);
}