久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2347|回復: 2
收起左側

關于pic單片機的2個程序出現問題,連老師都無法解決

[復制鏈接]
ID:337979 發表于 2018-5-25 13:10 | 顯示全部樓層 |閱讀模式
大家好 我是一位在校學生 有兩個程序出現了問題 詢問老師也沒有解決方法
所以請各位大大幫下忙

第一個函數 為計時器   每一秒 pic都會向電腦發送時間


00:00
00:01
00:02
00:03

用timer1來計時

當發生中斷時候 數值加1


第二個函數為兩部分組成

1 在AN0 接收電壓

電壓 若為 0到 四分之一電壓  則 RB0=1
電壓 若為 四分之一電壓到 四分之二電壓  則 RB0=1 RB1=1
電壓 若為 四分之二電壓到 四分之三電壓  則 RB0=1 RB1=1  RB2=1
電壓 若為 四分之三電壓到 四分之四電壓 則 RB0=1 RB1=1  RB2=1 RB3=1

2加入timer0

timer0只有發生中斷時  

RB的門 才會顯示電壓






#include "configurations_bits.h"
#define  _XTAL_FREQ 4000000

void envoie (char nb); // 發送函數
void cal(char nb);       // 將數字轉化為時間
char sec=0,min=0;    // 表面變量 sec為秒  min為分鐘
bit c=0;
void timer1(void); //timer1


void main (void)
    {
    timer1();// 調用TIMER1

    SPBRG=25;         //設定串聯傳輸
    TXSTA=0x26;
    RCSTA=0x90;
    BAUDCTL=0x00;

    GIE=1;       //允許中斷
    PEIE=1;
    TMR1IE=1;

    while(1)
    {
        if(c==2) // 使用2x500ms 來獲得1S的周期
        {
        cal(min);  // 處理數字并發送
        envoie(0x3A); 發送  :
        cal(sec);   //處理數字并發送
        envoie(0x0D);//換行
        envoie(0x0A);
        sec++;// 計數
        if(sec==60)    //如果秒等于60 歸零
        {
          sec=0;
          min=min+1;
          if(min==60)
          {
              min=0;
          }
        }
        c=0; //歸零
        }
               
    }
    }

    void envoie (char nb)  //發送程序
    {
        TXREG=nb;
        while (TRMT==0);
    }

    void cal(char nb)  //處理并發送的·函數
    {
        short int a,b;
        a=nb/10;
        b=nb-a*10;
        envoie(a+0x30);
        envoie(b+0x30);
    }
               
void timer1(void) // 設定TIMER1周期500ms
{
    T1CON=0x31;
    TMR1L=0xDC;
    TMR1H=0x0B;
    TMR1IF=0;
}

void interrupt interruption (void) //中斷程序
{
    if(TMR1IF==1)
    {
     c=c+1;  
    TMR1L=0xDC;
    TMR1H=0x0B;
    TMR1IF=0;
    }
}



#include "configurations_bits.h"
#define  _XTAL_FREQ 4000000

void confi_can ();
void confi_port();
char can ();
bit valide=0;
void timer0 ();
void interrupt inter ();



void interrupt inter () // 中斷程序

{
    if(T0IF==1) // 中斷
    {
      TMR0=0; //重制 timer0
      T0IF=0;
      valide=1; // 決定值
    }
}
void main ()
{
    char a;

    confi_can ();  //設定can的寄存器
    confi_port();  //設定要用的門

    GIE=1;         // 允許中斷
    PEIE=1;
    ADIE=1;
    T0IE=1;

    timer0 ();     //timer0

    while(1)
    {
        if(valide==1) // 中斷后啟動if函數
        {
            a = can(); 將can所獲得的值賦予a // 顯示電壓
        if((0<a)&&(a<=63))   
        {
            PORTB=0x01;
        }
        if((63<a)&&(a<=127))
        {
            PORTB=0x03;
        }
        if((127<a)&&(a<=191))
        {
            PORTB=0x07;
        }
        if((191<a)&&(a<=255))
        {
            PORTB=0x0f;
        }
        valide=0;   // 重置
        }



    }
}

void confi_can ()
{
    ADCON0=0b01000001;  //已AN0為模擬電位入口
    ADCON1=0b00000000;
    ANSEL=0b00000001;
    ANSELH=0b0000000;
}

void confi_port()  // B門 0 1 2 3 為出口 連接著led
{
    TRISA=0x01;   // AN0對應A0 所以設定A0為入口
    PORTA= 0x00;
    TRISB=0xF0;
    PORTB=0x00;
}

char can ()        // can模塊函數
{
    GO = 1;
    while(ADIF==0);
    ADIF==0;
    return(ADRESH);
}

void timer0 () //timer0 函數
{
    OPTION_REG=0b10000111;
    TMR0=0;
    T0IF=0;
}



出現的問題

第一個函數 pic只會發送一個 16位 數值為86 的東西 然后 停下

第二個函數  連接在RB0 1 2 3 的燈根本不會亮。。。
回復

使用道具 舉報

ID:111634 發表于 2018-5-26 18:57 | 顯示全部樓層
老師也沒有解決方法有兩種可能:一是老師水平較低;二是老師沒有空或不耐煩。大學生應該以自學為主,越好的大學老師講得越少越簡單,越差的大學老師講得越多越詳細。
回復

使用道具 舉報

ID:338838 發表于 2018-5-26 21:48 | 顯示全部樓層
第一個函數: 請檢查你的串口接線,注意,單片機的tx接電腦的rx,同時,看下串口調試軟件的串口號是否正確
第二個函數:可以在線看下,是不是模數轉換那里配置有問題,導致while(ADIF==0);死住,出不來了

僅供參考
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩午夜精品 | 欧美日韩精品一区二区三区蜜桃 | 美女爽到呻吟久久久久 | 日韩国产一区二区 | a视频在线观看 | 亚洲视频在线观看免费 | 97超碰在线播放 | 在线黄色影院 | 国产成人综合一区二区三区 | 天天操网| 怡红院怡春院一级毛片 | 欧美成人在线网站 | 黄色欧美| 精品一区二区三区在线视频 | 天天干视频 | 久草青青草 | 97精品超碰一区二区三区 | 在线观看www视频 | 国产日韩久久 | 中文字幕在线观看一区 | 日本天天操 | 日本精品久久 | 日本aaa视频| a黄在线观看 | 99久久久国产精品 | 日韩黄色av | 亚洲一区二区三区在线免费观看 | 色综合久久伊人 | 一区二区三区四区在线 | 爱爱视频网 | 国产乱码精品一区二区三区中文 | 紧缚调教一区二区三区视频 | 免费av在线| 亚洲精品久久久久中文字幕二区 | 欧美日韩三级 | 欧美自拍一区 | a级片www| 日韩成人在线视频 | 亚洲精品乱码久久久久久久久久 | 黄色片视频网站 | 色嗨嗨|