main.c

来自「《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter」· C语言 代码 · 共 122 行

C
122
字号
#include <reg51.h>
#include <intrins.h>

typedef unsigned char BYTE;

sbit P32=P3^2;

BYTE count;			//软件计数器
BYTE code TAB[]={	0xFF,0xFF,						
					0xDF,0xFF,
					0xBF,0xFF,													
					0x01,0xFF,
					0xBF,0xFF,
					0xDF,0xFF,
					0xFF,0xFF};

BYTE temp[16];

void INTS_T0() interrupt 1
{
	BYTE line;
	BYTE data *point=temp;
	BYTE num,temp;

	EA=0;

	if(--count==0)
	{
		count=5;
		line=8;
		
		do
		{
			num=2;
			CY=0;
			
			temp=*(point+1);
			ACC=temp;
			temp++;
			#pragma asm
				RLC A
			#pragma endasm

			do
			{
				ACC=*point;
				
				#pragma asm
					RLC A
				#pragma endasm	
				
				*point=ACC;
				point++;
			}while(--num);
		}while(--line);
	}

	TMOD=0x01;
	TL0=0xFF;
	TH0=0x3C;
	ET0=1;
	ET1=0;
	EA=1;
	TR0=1;
}

main()
{	
	BYTE i=0;
	BYTE num=16;
	BYTE offset;
	BYTE row;
   	BYTE line;
	
	EA=0;

	do
	{
		temp[i]=TAB[i];
		i++;
	}while(--num);
	 	
	TMOD=0x01;
	TL0=0xFF;
	TH0=0x3C;
	count=5;
	ET0=1;
	ET1=0;
	EA=1;
	TR0=1;
	SCON=0x00;
	P32=0;
	row=0x80;

	while(1)
	{
		line=0x08;
		offset=0x00;

		do
		{
			num=2;
			row=_cror_(row,1);
			SBUF=row;
			while(!TI);
			TI=0;

			do
			{
				SBUF=temp[offset];
				while(!TI);
				TI=0;
				offset++;
			}while(--num);

			P32=1;
			P32=0;
		}while(--line);
	}

	while(1);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?