第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎么回事,我的程序問題出在哪里?

怎么回事,我的程序問題出在哪里?

暮色呼如 2023-01-12 15:11:01
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit d1=P1^0;uchar temp;void delay(uint);void main(){EA=1;EX0=1;temp=0xfe;P1=temp;while(1){delay(1000);temp=_crol_(temp,1);P1=temp;}}void delay(uint z){uint i,j;for(i=z;i>0;i--)for(j=100;j>0;j--);}void exter0() interrupt 0{d1=0;}這是一個流水燈程序。第一,就是定義那個temp時,開始我是在主函數(shù)里面定義并同時賦值,結果編譯通不過,改成如上程序后(就是主函數(shù)之前定義)譯通過,為什么?二,這個程序有個中斷,即p3.2接低電平后應該是P1.0一直低電平,而流水燈停止流動,但是我把它下載到單片機后,觸發(fā)中斷,單片機只是運行速度變慢了,即流水變慢而沒有停止流水燈流動,怎么回事,程序錯了嗎?三,用proteus仿真則中斷完全不起作用,好像根本沒中斷這回事,難道proteus不能仿真中斷嗎。求高手解釋啊。
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

while(1) {
delay(1000);
temp=_crol_(temp,1);
P1=temp;
}
你的中斷程序里只是把P0^1=0而已,并沒有什么停止的命令,你的while還是一直在循環(huán),一直流,要么你直接把while里的條件改了,比如先定義一個變量,
unchar x;
x=1;
while(x)
{...}
中斷函數(shù)里改為
x=0;
那就可以了啊

查看完整回答
反對 回復 2023-01-15
?
茅侃侃

TA貢獻1842條經驗 獲得超21個贊

TCON寄存器沒有賦值
IT0是定時 計數(shù)器 你程序里面根本就沒有停止流水燈的操作  除非是 低電平始終觸發(fā)中斷() 直到變?yōu)楦唠娖?nbsp;但是你的TCON寄存器沒有賦值 也就是說 你的外部中斷類型沒有定義為是 低電平觸發(fā) 還是跳變觸發(fā) 你要讓中斷工作 你必須給他 完整的工作條件才可以 你要是想在函數(shù)里面定義變量 必須在開頭定義也就是變量之前不能有別的指令操作比如
main()
{uchar temp;
EA=1;
}這樣是可以的
main()
{EA=1;
uchar temp;
}這樣就編譯不了


查看完整回答
反對 回復 2023-01-15
  • 2 回答
  • 0 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號