Программирование МК на ассемблере ASM-51 и AVR Pascal. Китаев Ю.В. - 31 стр.

UptoLike

Составители: 

31
Device = mega128, VCC=5;
Import ;
From System Import ;
Define
ProcClock = 6000000; {Hertz}
StackSize = $0064, iData;
FrameSize = $0064, iData;
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
const blank:array[0..2]of byte=($FF,$FF,$FF);//== код гашения
const key8segm: array [0..11] of byte =
($F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$7F,$C0,$B6);//инв. 8-ми сегм.
коды
// 1 2 3 4 5 6 7 8 9 * 0 #
// $xx,$80,$xx,$7F,$xx,$B6;
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var s:array[0..2]of byte; key,kn:byte; adccode:word;
{--------------------------------------------------------------}
{ functions }
{$I C:\EMUL\Work\KeyLib4PascaL.pas}//== ф-ии для работы с клав-ой
//====================================================
procedure Init_Ports; //== задаем направления передачи данных
begin //== через порты, а также начальные значения
DDRC:=$FF;//== или так DDRC:=%11111111;
DDRD:=$8f;//== значение $70 для примера (пересчитать)
DDRE:=$f0;//== значение $F
для примера (пересчитать)
PORTE:=%11111111;//== гасим индикаторы, подавая на
end; //== аноды светодиодов нули через инверторы
//====================================================
procedure Init_Timer0_Async;
begin
TCCR0:=$0D;//== биты CS00,02=1(Rпреддел=128),WGM01=1-сброс
счетчика при совп.
OCR0:=$FF;//== код совпадения
ASSR.3:=1; //== бит AS0=1 - асинхронный режим Timer0 от кварца
32768Гц