#include<reg51.h>
#include<intrins.h>
#include"absacc.h"
#define uint unsigned int
#define uchar unsigned char
#define PA8255 XBYTE[0Xff7c]
#define PB8255 XBYTE[0Xff7d]
#define COM8255 XBYTE[0Xff7f]
sbit S1=P3^2;
void delay(uint t);
uchar time[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x01};
uchar a=0,b=0;
void main()
{
COM8255=0X80;
EA=1;
EX0=1;
IT0=1;
TMOD=0X55;
TH0=0XFF;
TL0=0XFF;
TH1=0XFF;
TL1=0XFF;
PX0=0;
PA8255=0X00;
PA8255=0X00;
while(1)
{
PB8255=time[a];
PA8255=time[b];
delay(1000);
a++ ;
if(time[b]==0x7d)b=0;
if(time[a]==0x01)a=0,b++;
}
}
void ting() interrupt 0
{
uchar n=100;
PB8255=0X00;
PA8255=0X00;
delay(1000);
ET0=1;
uj5u.com熱心網友回復:
中斷里面delay(1000),膽兒真肥uj5u.com熱心網友回復:
哈哈,你弄個標志位不就行了uj5u.com熱心網友回復:
編程要求如下:中斷服務程式要越短越好。
一般在中斷服務程式中置個標識,然后在主程式中處理。
例如:
串口接收資料時,只在中斷服務程式中讀取串口的資料,然后置標識,最后在主程式中根據標識來決議。
uj5u.com熱心網友回復:
為啥不能用呀?會怎么樣???
uj5u.com熱心網友回復:
關鍵是你為啥要這樣用?你這樣用的目的是什么?uj5u.com熱心網友回復:
void delay(uint t);這個函式的內容是什么?
uj5u.com熱心網友回復:
中斷里面不能加延時的,這樣會阻塞下一次中斷。會出問題,中斷里面只能加標志變化uj5u.com熱心網友回復:
問題解決方案是:加個中斷標志位uj5u.com熱心網友回復:
問題解決方案是:加個中斷標志位uj5u.com熱心網友回復:
問題解決方案是:加個中斷標志位uj5u.com熱心網友回復:
中斷標志位位暫存器可以隨便加嗎?uj5u.com熱心網友回復:
中斷標志變化是你自己定義的一個變數,比如定義一個unsigned char 變數a,進入中斷就改變他的值,外面判斷這個值進行處理,中斷函式里面要盡可能的簡單快速的執行完,所有處理盡量在主回圈里,不要做延時。多看看書。uj5u.com熱心網友回復:
找人寫程式 硬體是stc12c5024ad 硬體都做好了 用22.1184的晶振 用2片hc244 做12路輸入 一個64位的撥碼開關做地址輸入 4片tpic6b595做2組輸出 一個485和西門子plc200做通信用 plc的程式寫好了 實作12路乘n地址的輸入的計數 報警 顯示 的QQ39084813
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/39147.html
標籤:單片機/工控
上一篇:stc89c51
