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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20551|回復(fù): 27
收起左側(cè)

比較轉(zhuǎn)移指令請教

[復(fù)制鏈接]
ID:1137 發(fā)表于 2008-9-21 11:00 | 顯示全部樓層 |閱讀模式
請各位高手給我一個(gè)答案。比較轉(zhuǎn)移指令如:CJNE A,#data    ;我們知道如果(A)>#data,則CY=0,如果(A)<#data,則CY=1;我的問題是,如果(A)=#data,那是CY的值是0還是1呢?
回復(fù)

使用道具 舉報(bào)

ID:1905 發(fā)表于 2008-9-21 15:15 | 顯示全部樓層
1
回復(fù)

使用道具 舉報(bào)

ID:1905 發(fā)表于 2008-9-21 15:15 | 顯示全部樓層
如果(A)=#data,那是CY的值是1
回復(fù)

使用道具 舉報(bào)

ID:5753 發(fā)表于 2008-10-3 16:46 | 顯示全部樓層

我調(diào)試了下,先把C置位,再執(zhí)行比較兩數(shù)下相等指令,C=0

回復(fù)

使用道具 舉報(bào)

ID:7361 發(fā)表于 2008-11-29 20:57 | 顯示全部樓層
你使用比較指令的目的是想知道C的值嗎?可以利用WAVE等軟件進(jìn)行實(shí)驗(yàn).
回復(fù)

使用道具 舉報(bào)

ID:9120 發(fā)表于 2009-3-14 22:58 | 顯示全部樓層
路過學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:14094 發(fā)表于 2009-6-11 10:34 | 顯示全部樓層
學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:21096 發(fā)表于 2010-3-12 04:37 | 顯示全部樓層
領(lǐng)教,領(lǐng)教。
回復(fù)

使用道具 舉報(bào)

ID:22275 發(fā)表于 2010-3-16 14:25 | 顯示全部樓層

只是比較等不等

           

回復(fù)

使用道具 舉報(bào)

ID:23167 發(fā)表于 2010-4-18 16:08 | 顯示全部樓層

后面再用 JC語句判斷下

回復(fù)

使用道具 舉報(bào)

ID:27770 發(fā)表于 2011-1-12 01:47 | 顯示全部樓層
請各位高手給我一個(gè)答案。比較轉(zhuǎn)移指令如:CJNE A,#data    ;我們知道如果(A)>#data,則CY=0,如果(A)<#data,則CY=1;我的問題是,如果(A)=#data,那是CY的值是0還是1呢?

明確如下:

A=#data 則 C=0

A>#data 則 C=0

A<#data 則 C=1

C 的結(jié)果與做 A-#data 減法相同.

可以利用這個(gè) C 判斷 ≥ 和 < 的關(guān)系.

變化一下,可以排除 = 而僅僅利用 > 和 < ,非常有用. 它不影響 A 和 #data (應(yīng)該 MEM )的原來數(shù)值.

CJNE     A,MEM   ;一個(gè) RAM     更加有用!

僅供參考!

回復(fù)

使用道具 舉報(bào)

ID:29254 發(fā)表于 2011-6-14 10:36 | 顯示全部樓層

A<#data則CY=1,否則CY=0,書上原話

回復(fù)

使用道具 舉報(bào)

ID:31114 發(fā)表于 2011-10-17 21:56 | 顯示全部樓層
 初學(xué),學(xué)習(xí)!!
回復(fù)

使用道具 舉報(bào)

ID:32817 發(fā)表于 2011-10-25 18:31 | 顯示全部樓層

路過

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2012-1-22 20:15 | 顯示全部樓層

這里有一個(gè)比較好的記憶方法:和減法指令的借位相同(前面一個(gè)是被減數(shù),后面一個(gè)是減數(shù))。不產(chǎn)生借位C不置位。

有這么幾種常用用法:

其中常用的:

CJNE  A,  #DATA,  $+3          ;順序執(zhí)行,下面一句判斷轉(zhuǎn)向

JC      ****                          ;或者“JNC”

[此貼子已經(jīng)被作者于2012-1-26 15:00:47編輯過]
回復(fù)

使用道具 舉報(bào)

ID:37270 發(fā)表于 2012-3-30 17:37 | 顯示全部樓層
怎么發(fā)帖?謝謝
回復(fù)

使用道具 舉報(bào)

ID:34178 發(fā)表于 2012-5-13 21:38 | 顯示全部樓層

判斷A的值與#DATA的關(guān)系,,沒不要管cy,

 

回復(fù)

使用道具 舉報(bào)

ID:34178 發(fā)表于 2012-5-13 21:44 | 顯示全部樓層

判斷A的值與#DATA的關(guān)系,,沒必要管cy,

如:MOV R0=#20;

     MOV A,R0;

CJNE A,#20,QQ;

這里A=#DATA,就是20,可以了吧,C  ??管什么????

 

回復(fù)

使用道具 舉報(bào)

ID:40821 發(fā)表于 2012-6-14 14:26 | 顯示全部樓層
IO定義:

輸出口P0.0

輸入口P2.7\P2.6P2.5\P2.4

要求:1、P2.6為低時(shí),P0.0為高;P2.7和P2.6為低時(shí),P0.0為低。P2.7單獨(dú)為低時(shí),不作任何反映。

        2、當(dāng)P2.4為低時(shí),無論P(yáng)2.7和P2.6在什么狀態(tài),P0.0為低。

        3、當(dāng)P2.5為低時(shí),P0.0為低。

以下是程序,但有問題,請高手指出:

/*

 


*/
#include<STC12C5A60S2.h>
#define uchar unsigned char
#define uint unsigned int
#define Delaytime  100 //消抖
#define Delaybeemp 10
typedef signed   long           INT64S;
typedef unsigned long           INT64U;
typedef signed   int            INT32S;
typedef unsigned int            INT32U;
typedef signed   short          INT16S;
typedef unsigned short          INT16U;
typedef signed   char           INT8S;
typedef unsigned char           INT8U;
/*IO口定義*/
sbit out_upper=P0^0;   //接電磁閥
sbit out_lower = P0^2; //不用
sbit Buzzer = P0^1; //不用

 

sbit Upper_limit=P2^4; //(接光膜傳感器)
sbit Lower_limit = P2^5; //檢測電磁到位開關(guān)

sbit button = P2^6; //按鈕S2
sbit button1 = P2^7; //按鈕S1

typedef struct tagTYPE_UART_BUFFER
{
 INT8U  ucFlag; 
    INT8U  ucIndex;
    INT8U  ucLength;
    INT8U  ucBuffer[20];
}TYPE_UART_BUFFER, *pTYPE_UART_BUFFER;

typedef struct tagTYPE_UART_INFO
{
    TYPE_UART_BUFFER    sRX;
    TYPE_UART_BUFFER    sTX;
}TYPE_UART_INFO, *pTYPE_UART_INFO;
// ---------------------------------------------
unsigned char button_flag,jishu_flag,Upper_limit_flag,Lower_limit_flag;
unsigned char delay = Delaytime;
TYPE_UART_INFO xdata sUART0_Info = {0};

void sendonebyte(void);
/*
函數(shù)功能:串口初始化,
波特率:38400 工作在1T模式,使用定時(shí)器1計(jì)數(shù)
*/
void InitUART(void)
{
    TMOD = 0x21;
    SCON = 0x50;
 AUXR |= 0x40;//使其工作在1T模式下
    TH1 = 0xF7;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;

 //定時(shí)器0 定時(shí)時(shí)間:10ms
 TH0 = 0x0FF;
    TL0 = 0x0F6;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
 //初始化輸入輸出的io
 P0M0 = 0xff;
 P0M1 = 0x00;
 P2M0 = 0x00;
 P2M1 = 0xff;
}

/*
函數(shù)功能:延時(shí)時(shí)間為10ms
*/
void delay_10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void main(void)
{
 uchar i,flag=0;
// jishu_flag = 0;
 InitUART();
 out_upper = 1;//此時(shí)汽缸向上動作
 out_lower = 1;
 Upper_limit_flag = 0;   //  光幕傳感器
 Lower_limit_flag = 0;     //到位開關(guān)
 button_flag = 0; //按鈕S1
 button1_flag = 0; //按鈕S2
 while(1)
 {
//  if(sUART0_Info.sRX.ucFlag == 1)
//  {
//   sUART0_Info.sRX.ucFlag = 0;
//    out_upper = 1;//此時(shí)汽缸向上動作
//    out_lower = 1;
//   for(i = 0;i<sUART0_Info.sRX.ucLength;i++)
//   {
//    sUART0_Info.sRX.ucBuffer = 0;
//   }
//  }

 


  if(Upper_limit_flag == 1)  //光幕傳感器
  {
      Upper_limit_flag = 0;
      out_upper = 1;//此時(shí)汽缸向上動作
      out_lower = 1;
      flag = 0;
      
  }
  if((Lower_limit_flag == 1)&&(flag == 0)) //限位開關(guān)和光幕傳感器做邏輯與運(yùn)算
  {
   Lower_limit_flag = 0;     //限位開關(guān)為低電位
    flag = 1;
   out_upper = 1;//此時(shí)汽缸向下動作
   out_lower = 0;
   sendonebyte();
  }
  if(button_flag == 1)&&(button1_flag == 1)    //按鈕按下
  {
     button_flag = 0;
     out_upper = 0;//此時(shí)汽缸向下動作
     out_lower = 1;
  }
//  if((input==0)&&(jishu_flag == 0))
//  {
//   delay_10ms();
//   if((input==0)&&(jishu_flag == 0))
//   {
//    output = 0;//把汽缸合上
//    jishu_flag = 1;
//    overtime = 0;
//    while((input_test_qg==1)&&(overtime++ < Delaybeemp-1))
//    {
//    
//     for(i = 0;i< 100;i++)
//     {
//      delay_10ms();    
//     }
//    }
//     if(overtime>=Delaybeemp-1)
//     {
//      Buzzer = 0;
//     }
//     else if(input==0)
//     {
//      sendonebyte();
//     }
//   } 
//  }
//  if(button_flag == 1)
//  {
//   button_flag = 0;
//   Buzzer = 1;
//   output = 1;
//  // jishu_flag = 0;
//  } 
//  if(input==1)
//  {
//   delay_10ms();
//   if(input==1)
//   {
//    jishu_flag = 0; 
//    Buzzer = 1;
//   } 
//  }
 }  
}


void ISR_UART0(void)interrupt 4
{

     INT8U ucTemp;// 暫存變量
    // 接收
    if (RI){
        // ---------------------------------------------
        // 啟動接收
        RI = 0;
        ucTemp = SBUF;
        // 判斷數(shù)據(jù)
        switch (sUART0_Info.sRX.ucIndex)
  {
            case 0:// "Z"
                if (ucTemp == 'Z')
    {
                    // "Z"
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 無效數(shù)據(jù)
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            case 1:// "U"
                if (ucTemp == 'U')
    {
                   
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 無效數(shù)據(jù)
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            case 2:// "Z"
                if (ucTemp == 'Z')
    {
                    // "Z"
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 無效數(shù)據(jù)
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            default:// 通信數(shù)據(jù)
                // 接收通信數(shù)據(jù),
                sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;             
                // 接收通信數(shù)據(jù),判斷回車鍵
                if(((ucTemp == '\r')||((ucTemp == '\n')))&&(sUART0_Info.sRX.ucIndex >= 3))
    {
                 sUART0_Info.sRX.ucLength = sUART0_Info.sRX.ucIndex;
     sUART0_Info.sRX.ucIndex = 0; //接收完,清零索引
     sUART0_Info.sRX.ucFlag = 1;                
                }
                else
    {
                }
                break;
        }  
        // ---------------------------------------------
    }

    // ---------------------------------------------
    if (TI){
        // ---------------------------------------------
        TI = 0;
        // ---------------------------------------------
        if (sUART0_Info.sTX.ucIndex < sUART0_Info.sTX.ucLength)
  {
            SBUF = sUART0_Info.sTX.ucBuffer[sUART0_Info.sTX.ucIndex ++];
        }
        else
  {
            sUART0_Info.sTX.ucIndex = 0;
            sUART0_Info.sTX.ucLength = 0;
        }
        // ---------------------------------------------
    }
    // ---------------------------------------------
}

//10 ms掃描按鍵
void Timer0Interrupt(void) interrupt 1
{
  // 清除標(biāo)志
    TF0 = 0;
    TR0 = 0;
    TH0 = 0x0FF;
    TL0 = 0x0F6;
 TR0 = 1;   
 if((button == 0)||(Upper_limit == 0)||(Lower_limit == 0)) //按鈕、光幕傳感器、到位開關(guān)存在邏輯或的關(guān)系
 {
  delay -- ; //延時(shí)消抖
  if(!delay)
  {
   delay =  Delaytime;
   if(button == 0)
   {
    button_flag =1;
   }
   else if(Upper_limit == 0)
   {
    Upper_limit_flag = 1;
   }
   else if(Lower_limit == 0)
   {
     Lower_limit_flag = 1;
   }            
  }
 }

    //add your code here!
}

void sendonebyte(void)
{
  sUART0_Info.sTX.ucBuffer[0] = 'Z';
  sUART0_Info.sTX.ucBuffer[1] = 'f';
  sUART0_Info.sTX.ucBuffer[2] = 'Z';
  sUART0_Info.sTX.ucBuffer[3] = '\r';
  sUART0_Info.sTX.ucIndex = 0;
     sUART0_Info.sTX.ucLength = 4;
  SBUF = sUART0_Info.sTX.ucBuffer[sUART0_Info.sTX.ucIndex ++];
}

回復(fù)

使用道具 舉報(bào)

ID:41788 發(fā)表于 2012-6-17 20:06 | 顯示全部樓層

各位大神  恩整明白點(diǎn)嗎  讓你們給整暈了  這這這........................................

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2012-6-27 19:12 | 顯示全部樓層
以下是引用ccdres在2008-9-21 15:15:58的發(fā)言:
如果(A)=#data,那是CY的值是1

那你就真的錯(cuò)了!相等時(shí)(和大于是一樣),不產(chǎn)生借位,所以C=0,其實(shí)在KEIL里面一試便知。

 

這個(gè)比較語句實(shí)際上對進(jìn)位標(biāo)志的影響,和減法一樣。

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2012-6-27 19:29 | 顯示全部樓層
以下是引用lfb77在2012-5-13 21:44:17的發(fā)言:

判斷A的值與#DATA的關(guān)系,,沒必要管cy,

如:MOV R0=#20;

     MOV A,R0;

CJNE A,#20,QQ;

這里A=#DATA,就是20,可以了吧,C  ??管什么????

 

但是如果想根據(jù)是大于、小于、或等于來決定跳轉(zhuǎn)位置時(shí)呢?而不簡單的是否相等。

 

比如:

      CJNE A,#20,$+3       ;比較語句本身不跳轉(zhuǎn),只會對進(jìn)位標(biāo)志CY產(chǎn)生影響 A>=20時(shí),CY=0,A<20時(shí),CY=1

      JC    QQ                     ;根據(jù)上面的語句,產(chǎn)生的CY的結(jié)果,決定跳轉(zhuǎn)與否。

      ....

      ....

      ....

QQ:

      ......

      ......

當(dāng)然,也可以有3個(gè)分支(大于、小于、等于)去處:相等時(shí)順序執(zhí)行;不相等時(shí),轉(zhuǎn)到“QQ:”處,在“QQ:”處再根據(jù)CY值(大于或小于)確定方向。

[此貼子已經(jīng)被作者于2012-6-27 19:31:40編輯過]
回復(fù)

使用道具 舉報(bào)

ID:48830 發(fā)表于 2013-3-22 10:38 | 顯示全部樓層
看書不仔細(xì),A=#DATE,CY為0.
回復(fù)

使用道具 舉報(bào)

ID:51335 發(fā)表于 2013-6-28 22:13 | 顯示全部樓層
不是跳轉(zhuǎn)嗎???
回復(fù)

使用道具 舉報(bào)

ID:58696 發(fā)表于 2014-1-11 16:18 | 顯示全部樓層
中人在255以下,就不用管CY
回復(fù)

使用道具 舉報(bào)

ID:59827 發(fā)表于 2014-5-16 10:34 來自手機(jī) | 顯示全部樓層
應(yīng)該保持不變
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91视频一区二区 | 亚洲国产精品久久久久婷婷老年 | 欧洲性生活视频 | 国产精品成人一区二区三区夜夜夜 | 麻豆a级片 | 久久久久久久久久久久亚洲 | 中文字幕精品一区 | 五月精品视频 | 日韩欧美国产精品 | 欧美二区在线 | 久久久久久久久久久久久久久久久久久久 | 久久高清 | 色综合久久久 | 亚洲三区在线观看 | 亚洲一区在线日韩在线深爱 | 免费久久久久久 | 天天射网站 | 免费精品| 91精品久久久久久久久 | av日韩精品 | 欧美一区二区三区四区在线 | 国内成人免费视频 | 欧美aⅴ在线观看 | 日本精品一区二区三区四区 | 久在线 | 亚洲黄色片免费观看 | 一区二区三区成人 | 人人cao | 免费在线观看av网址 | 日韩精品一区二区三区 | 国产成人精品综合 | 亚洲精品乱码久久久久v最新版 | 久久久久久av | 久久精品一| 日韩欧美三区 | 麻豆精品国产91久久久久久 | 最近最新中文字幕 | 亚洲中字在线 | 在线看h| 成人在线免费视频 | 国产精品亚洲视频 |