找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2174|回复: 7
打印 上一主题 下一主题
收起左侧

我是初学者,问些N76E003的串口0按键调试问题

[复制链接]
跳转到指定楼层
楼主
我想弄一个简单的按键。  按下按键1~6串口调试助手显示1~6, 我用的是N76E003的串口0,配置了串口0模式1    定时器1模式2  
下面是我自己写的代码,但是串口调试助手没反应,想请教大神帮帮忙。

#include "n76e003.h"
#include "stdio.h"

#define uint32 unsigned int  
//typedef unsigned int uint32;

void delay_us(int n)
{
  int m;
  for(m=0;m<n;m++);
}

void delay_ms(int j)
{
  int k;
  for(k=0;k<j;k++);
  delay_us(1000);
}

void P0_P1_Mode(void)
{
  P0M1=0x3A;  P0M2=0x3B;  //设置P0
  P1M1=0xA0;  P1M2=0xBF;  //设置P1
}

sbit s1 = P0^0;
sbit s2 = P1^0;
sbit s3 = P1^1;
sbit s4 = P1^2;
sbit s5 = P1^3;
sbit s6 = P1^4;

void UART0_Init(uint32 Baud)        //设置串口0
{
   P0_P1_Mode();
   ES=1;                                //使能所有中断
   ES=1;                //串口0中断使能
   ET1=0;                                //关闭定时器1中断
   SCON = 0x52;         //串口0选择模式1 SM0=0 SM1=1  REN=1  TI=1
   T3CON|=0x00;                 //选择定时器1                     BRCK=0
   PCON |=0x80;                    //定时器1的波特率加倍             SMOD=1
   CKCON|=0x10;                        //定时器1的时钟源为系统时钟         T1M=1
   TMOD |=0x20;         //定时器1选择模式2 8位计数器,数值从TH1自动重装载入TL1        M1=1 M0=0  2^8=256

   #ifdef FOSC_160000
   TH1 = 256 - (1000000/Baud+1);                         /*16 MHz */
   #endif            

   TCON |=0x40;                   //定时器1启动                TR1=1
}

void Send_Data_UART0(int a)
{
  TI=0;
  SBUF=a;                     //串口0数据缓存寄存器
  while(TI==0);
}

int main()
{
   s1=1;
   s2=1;
   s3=1;
   s4=1;
   s5=1;
   s6=1;
   UART0_Init(9600);

   while(1)
   {
            if(s1=0)
         { Send_Data_UART0(1); }
         delay_ms(10);
         if(s2=0)
         { Send_Data_UART0(2); }         
         delay_ms(10);
         if(s3=0)
         { Send_Data_UART0(3); }       
         delay_ms(10);
         if(s4=0)
         { Send_Data_UART0(4); }
         delay_ms(10);
         if(s5=0)
         { Send_Data_UART0(5); }
         delay_ms(10);
         if(s6=0)
     { Send_Data_UART0(6); }
         delay_ms(10);   
   }
}

另外TH1 = 256 - (1000000/Baud+1);     /*16 MHz */  这句中1000000是怎么来的?


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:490426 发表于 2020-4-10 12:09 | 只看该作者
用过这个芯片,你可以先用串口在大循环里面不停的发送数据,看看有没有数据出来,来判断是按键还是串口配置不对。总之问题得一点一点查找,直接贴代码不知道你怎么写的
回复

使用道具 举报

板凳
ID:89217 发表于 2020-4-10 13:21 | 只看该作者
直接先用官方的 程序刷一波  有功能了在自己改成想要的不就行了
回复

使用道具 举报

地板
ID:723138 发表于 2020-4-10 15:13 | 只看该作者
罗程峰8200 发表于 2020-4-10 13:21
直接先用官方的 程序刷一波  有功能了在自己改成想要的不就行了

没有啊   我就直接看规格书写的   没懂多少
回复

使用道具 举报

5#
ID:723138 发表于 2020-4-10 15:15 | 只看该作者
xujiabin 发表于 2020-4-10 12:09
用过这个芯片,你可以先用串口在大循环里面不停的发送数据,看看有没有数据出来,来判断是按键还是串口配置 ...

初学,不太懂,别人就给我个原理图    然后串口调试,所以你这么说我也不知道该怎么弄
回复

使用道具 举报

6#
ID:723138 发表于 2020-4-10 15:22 | 只看该作者
这个是原理图,挺简单的,我是初学的,根据查看规格书写的代码,但是不知道哪里有问题,串口调试助手没反应。有能指出来的吗?

IMG_20200402_192112.jpg (6.15 MB, 下载次数: 41)

IMG_20200402_192112.jpg
回复

使用道具 举报

7#
ID:968164 发表于 2021-9-28 10:06 | 只看该作者
if(a==B) 不是  if(a=b)
回复

使用道具 举报

8#
ID:359272 发表于 2021-9-29 08:18 | 只看该作者
你的if()里面怎么全部是赋值语句,判断的话是两个等号,==
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表