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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

關(guān)于單片機(jī)執(zhí)行的時(shí)序沖突問(wèn)題理解

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 9 黑幣 回復(fù)本帖可獲得 1 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:223571 發(fā)表于 2017-12-5 11:34 | 顯示全部樓層 |閱讀模式
]UT0U]C%ASJG8[ISVV0I`8X.png          請(qǐng)問(wèn)一個(gè)困擾很久的問(wèn)題,在做矩陣按鍵實(shí)驗(yàn)時(shí),采用行列掃描原理編程,假如上電后,我一直按著某個(gè)鍵,那么在讀取按鍵的程序中,三個(gè)斷點(diǎn)觸豈不是有矛盾了,我按鍵持續(xù)了幾秒,程序掃描了n多次,在幾秒之中的某一些時(shí)刻,我人為的按鍵給端口賦值與軟件語(yǔ)句賦值相沖突?

實(shí)際下載沒(méi)問(wèn)題,怎么理解呀?




回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2017-12-5 14:04 | 顯示全部樓層
你按住某個(gè)鍵不放不是賦值操作,只是改變端口狀態(tài),程序讀取端口狀態(tài)與所賦值作比較獲取鍵值。
回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2017-12-5 20:09 | 顯示全部樓層

回帖獎(jiǎng)勵(lì) +1 黑幣

你在按住按鍵,程序已經(jīng)固化了,你怎么“賦值”?
回復(fù)

使用道具 舉報(bào)

ID:223571 發(fā)表于 2017-12-11 12:00 | 顯示全部樓層
ahshmj 發(fā)表于 2017-12-5 20:09
你在按住按鍵,程序已經(jīng)固化了,你怎么“賦值”?

請(qǐng)你詳細(xì)解釋一下,程序固化怎么理解,是程序停止不運(yùn)行?
回復(fù)

使用道具 舉報(bào)

ID:223571 發(fā)表于 2017-12-11 14:51 | 顯示全部樓層
wulin 發(fā)表于 2017-12-5 14:04
你按住某個(gè)鍵不放不是賦值操作,只是改變端口狀態(tài),程序讀取端口狀態(tài)與所賦值作比較獲取鍵值。

補(bǔ)充一下:程序前面是#define GPIO_KEY P1       
按你的意思賦值是對(duì)寄存器的賦值與端口狀態(tài)的電平不同,第045是賦值,048是讀取寄存器的賦值,如果滿(mǎn)足條件就執(zhí)行下面的程序,那么問(wèn)題來(lái)了:If條件滿(mǎn)足的原因不是按鍵的操作,致使寄存器的值發(fā)成改變嗎?

這該如何理解呢?
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2017-12-11 21:11 | 顯示全部樓層
藍(lán)野 發(fā)表于 2017-12-11 14:51
補(bǔ)充一下:程序前面是#define GPIO_KEY P1       
按你的意思賦值是對(duì)寄存器的賦值與端口狀態(tài)的電平不同,第04 ...

端口寄存器的值只能軟件改變,按鍵只是暫時(shí)改變端口電平狀態(tài),不能改變端口寄存器的值,一旦按鍵抬起,端口電平狀態(tài)恢復(fù)為端口寄存器的值。給你一個(gè)4*4矩陣鍵盤(pán)程序參考,每句都有注釋?zhuān)浑y理解。
#include <reg52.h>                                                 //頭文件
#define uchar unsigned char                         //宏定義
#define uint unsigned int                                 //宏定義
uchar key=0;                                                        //鍵值變量

void key_scan()                                                        //矩陣鍵盤(pán)掃描函數(shù)
{
        uchar temp1,temp2,temp3;                        //臨時(shí)變量
        static bit sign=0;                                        //按鍵自鎖標(biāo)志
        static uchar count=0;                                //消抖計(jì)數(shù)變量
        P3=0xf0;                                                        //先給P3賦一個(gè)初值1111 0000
        if(P3!=0xf0)                                                 //判斷P3不等于所賦初值,說(shuō)明有健按下
        {
                if(sign==0)                                                //如果按鍵自鎖標(biāo)志為0
                {
                        count++;                                        //消抖計(jì)數(shù),摒棄Delay延時(shí)方式
                        if(count>=250)                                //估算主循環(huán)周期調(diào)整100~255
                        {
                                sign=1;                                        //按鍵自鎖標(biāo)志置1,鍵不抬起,按其他鍵無(wú)效
                                temp1=P3;                                //temp1保存高4位變化xxxx 0000
                                P3=0x0f;                                //再給P3賦值0x0f    0000 1111
                                temp2=P3;                                //temp2保存低4位變化0000 xxxx
                                temp3=temp2|temp1;                //temp3=temp2按位與temp1,等效于低4位+高4位
                                key=temp3;                                //保存鍵值
                        }
                }
        }
        else                                                                 //按鍵抬起
        {
                sign=0;                                                        //按鍵自鎖標(biāo)志清0
                count=0;                                                //消抖計(jì)數(shù)清0
        }
}

void main()
{
        while(1)
        {
                key_scan();                                                //鍵盤(pán)掃描
                P1=key;                                                        //LED低電平亮顯示鍵值
        }                                                                               
}
回復(fù)

使用道具 舉報(bào)

ID:223571 發(fā)表于 2017-12-13 10:17 | 顯示全部樓層
wulin 發(fā)表于 2017-12-5 14:04
你按住某個(gè)鍵不放不是賦值操作,只是改變端口狀態(tài),程序讀取端口狀態(tài)與所賦值作比較獲取鍵值。

再次請(qǐng)教一下:有的人表述為程序是讀取端口的狀態(tài),有的說(shuō)是檢測(cè)寄存器的值。這兩者 怎么區(qū)分?我該怎么辨別呢?
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2017-12-13 14:30 | 顯示全部樓層
藍(lán)野 發(fā)表于 2017-12-13 10:17
再次請(qǐng)教一下:有的人表述為程序是讀取端口的狀態(tài),有的說(shuō)是檢測(cè)寄存器的值。這兩者 怎么區(qū)分?我該怎么辨 ...

這是表述不嚴(yán)謹(jǐn),端口的電平狀態(tài)不一定就是端口寄存器的值,端口作為輸出,端口的電平通常是與寄存器的值相同,端口作為輸入其電平狀態(tài)是受外接電路的電平狀態(tài)影響的,端口的電平往往是與寄存器的值不相同。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 亚洲成人中文字幕 | 免费黄色网址视频 | 欧美激情综合五月色丁香小说 | 久久精品日产第一区二区三区 | 日本一区二区三区精品视频 | 91偷拍精品一区二区三区 | 黄色大片观看 | 亚洲一区二区免费视频 | 国产精品日韩欧美一区二区三区 | 国产精品福利视频 | 青青草在线播放 | 男人的天堂久久 | 欧美色成人 | av一二三四 | 亚洲色图综合 | 国产国产精品久久久久 | 国产精品久久久久久52avav | 91色视频在线观看 | 国产精品美女www爽爽爽 | 激情一区二区三区 | 伊人成人免费视频 | 亚洲高清在线视频 | 亚洲在线一区二区 | 亚洲第一成人av | 国产精品一区三区 | 久久久人成影片一区二区三区 | 中文字幕av在线 | 国产精品.xx视频.xxtv | 欧美精品一区在线发布 | 国产精品国产a级 | 欧美精品成人一区二区三区四区 | 一区亚洲 | 性高湖久久久久久久久 | 免费看91 | 欧美日韩中文字幕在线 | 一区二区欧美在线 | 高清av电影 | 免费看黄视频网站 | 亚洲精品欧美 | 欧美黄色网 |