精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

一個簡單程序

下面是程序清單.當我用keil編譯時有錯誤,不能生產hex文件,我想請教各位程序錯在哪里呢?
題目是這樣的,在正常情況下8只led從中間開始向兩邊點亮,然后熄滅,最后由兩邊向中間點亮,且不斷循環,當外部中斷0產生時,8只led管閃爍8次.
我用keil編譯時它提示我出錯在中斷那里,誰可以告訴我錯在哪里了嗎?
怎么才可以改正呢?
電路圖也有,在下面.
ORG 0000H
AJMP NOMAL
ORG 0003H
AJMP EXT0
ORG 0010
NOMAL:MOV SP,#60H
SETB IT0
SETB EA
SETB EX0
MOV DPTR,#TABLE1
MOV R1,#00H
LOOP1:MOV A,R1
MOVC A,@A+DPTR
CJNE A,#0AAH,DISP1
MOV R1,#00H
MOV DPTR,#TABLE2
LOOP2:MOV A,R1
MOVC A,@A+DPTR
CJNE A,#0AAH,DISP2
MOV R1,#00H
MOV DPTR,#TABLE1
AJMP LOOP1
DISP1:MOV P1,A
INC R1
LCALL DELAY
AJMP LOOP1
DISP2:MOV P1,A
INC R1
LCALL DELAY
AJMP LOOP2
ORG 01OOH
EXT0:PUSH A
MOV R2,#08H
MOV A,#00H
FLASH: MOV P1,A
LCALL DELAY
CPL A
DJNZ R2,FLASH
POP A
RETI
DELAY :MOV R5,#02
D1:MOV R6,#250
D2:MOV R7,#250
D3:NOP
DJNZ R7,D3
DJNZ R6,D2
DJNZ R5,D1
RET
TABLE1:DB 00H,18H,3CH,7EH,0FFH,0AAH
TABLE2:DB 00H,81H,0C3H,0E7H,0FFH,0AAH
END
全部回復(7)
正序查看
倒序查看
紅心j
LV.3
2
2009-01-12 15:07
ORG 01OOH
此句錯誤,誤把100寫成1oo了
0
回復
2009-01-13 07:54
@紅心j
ORG01OOH此句錯誤,誤把100寫成1oo了
謝謝你.
這個程序后來我修改通過呢,01OO要改成0100 還有push a  ,pop  a  要改成
push acc  ,pop acc .
0
回復
紅心j
LV.3
4
2009-01-13 08:32
@pengchuang0819
謝謝你.這個程序后來我修改通過呢,01OO要改成0100還有pusha  ,pop  a  要改成pushacc  ,popacc.
PUSH ACC是標準寫法,有的編譯軟件也認PUSH A,但養成良好習慣最好
0
回復
mmm789
LV.6
5
2009-01-13 16:50
#define uchar unsigned char //定義一下方便使用
#define uint  unsigned int
#define ulong unsigned long
#include      //包括一個52標準內核的頭文件

sbit P10 = P1^0; //頭文件中沒有定義的IO就要自己來定義了
sbit P11 = P1^1;
sbit P12 = P1^2;  
sbit P13 = P1^3;
bit ldelay=0; //長定時溢出標記,預置是0

char code dx516[3] _at_ 0x003b;//這是為了仿真設置的
//定時器中斷方式的跑馬燈
void main(void) // 主程序
{
uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預定的寫入P1的值
uchar ledi; //用來指示顯示順序

RCAP2H =0x10; //賦T2的預置值0x1000,溢出30次就是1秒鐘
RCAP2L =0x00;
TR2=1;   //啟動定時器
ET2=1;    //打開定時器2中斷
EA=1;     //打開總中斷

while(1)  //主程序循環
{
if(ldelay) //發現有時間溢出標記,進入處理
{
ldelay=0;  //清除標記
P1=ledp[ledi]; //讀出一個值送到P1口
ledi++; //指向下一個
if(ledi==4)ledi=0; //到了最后一個燈就換到第一個
}
}
}
//定時器2中斷
timer2() interrupt 5  
{
static uchar t;
TF2=0;
t++;
if(t==30) //T2的預置值0x1000,溢出30次就是1秒鐘,晶振22118400HZ
{
t=0;
ldelay=1;//每次長時間的溢出,就置一個標記,以便主程序處理
}
}

0
回復
2009-01-15 07:53
@mmm789
#defineucharunsignedchar//定義一下方便使用#defineuint  unsignedint#defineulongunsignedlong#include    //包括一個52標準內核的頭文件sbitP10=P1^0;//頭文件中沒有定義的IO就要自己來定義了sbitP11=P1^1;sbitP12=P1^2;  sbitP13=P1^3;bitldelay=0;//長定時溢出標記,預置是0charcodedx516[3]_at_0x003b;//這是為了仿真設置的//定時器中斷方式的跑馬燈voidmain(void)//主程序{ucharcodeledp[4]={0xfe,0xfd,0xfb,0xf7};//預定的寫入P1的值ucharledi;//用來指示顯示順序RCAP2H=0x10;//賦T2的預置值0x1000,溢出30次就是1秒鐘RCAP2L=0x00;TR2=1;  //啟動定時器ET2=1;    //打開定時器2中斷EA=1;    //打開總中斷while(1)  //主程序循環{if(ldelay)//發現有時間溢出標記,進入處理{ldelay=0;  //清除標記P1=ledp[ledi];//讀出一個值送到P1口ledi++;//指向下一個if(ledi==4)ledi=0;//到了最后一個燈就換到第一個}}}//定時器2中斷timer2()interrupt5  {staticuchart;TF2=0;t++;if(t==30)//T2的預置值0x1000,溢出30次就是1秒鐘,晶振22118400HZ{t=0;ldelay=1;//每次長時間的溢出,就置一個標記,以便主程序處理}}
C語言我看不怎么懂,我還在學習匯編語言.
謝謝你們?~~~~~~~~~~~~~~
0
回復
紅心j
LV.3
7
2009-01-15 11:28
這里少了一句

FLASH: MOV P1,A
LCALL DELAY
CPL A
LCALL DELAY       ;************
DJNZ R2,FLASH
POP A
RETI
0
回復
2009-01-16 13:52
@紅心j
這里少了一句FLASH:MOVP1,ALCALLDELAYCPLALCALLDELAY      ;************DJNZR2,FLASHPOPARETI
確實如此,你看得好仔細啊 ~!!!!!!!!!
0
回復
主站蜘蛛池模板: 手机在线观看日韩av | 好男人网站www久久久 | 超碰福利久久 | 美女一级大黄录像片 | 久久久无码a片观看免费 | 小舞屈辱打开双腿自慰出白浆 | 成人自拍视频网 | 在线观看国产黄 | 成人性生交大片免费看冫视频 | 国产主播一区二区三区 | av免费观看在线观看 | 久久久免费高清视频 | 久久精品中文字幕一区二区 | 国产一区二区三区四区 | 男女日批免费视频 | 国产人妻人伦精品一区二区 | 欧美人与动牲交ZOOZ男人 | 成人ssswww在线播放 | 激情文学另类小说亚洲图片 | 红桃视频ht94vip | 久久久久在线 | 久久亚洲AV无码精品色午夜 | 另类小说五月天 | 无码AV精品一区二区三区 | 婷婷五月六月激情综合色中文字幕 | 精品无人区麻豆乱码1区2区新区 | 青青草国产成人a∨下载安卓 | 免费在线看片网站 | 国产成人综合美国十次 | 自拍欧美国产 | av免费成人 | 成人免费毛片色戒 | 黄色免费一级视频 | 国产精一品亚洲二区在线播放 | 西西人体大胆啪啪实拍 | 色草在线 | 国产95亚洲| 国产乱码久久久久久一区二区 | 日韩国产二区 | 夜精品无码A片一区二区蜜桃 | 亚洲欧洲无码一区二区三区 |